다음 텍스트에 정규식을 사용해야합니다. 괄호는 중첩되지 않습니다.
{ ... bla ... {text} jdjdj ... { kdkdkdkd aaa { abc }
내가 사용하면 \{(.*?)\}
두 그룹이 있습니다.
... bla ... {text
kdkdkdkd aaa { abc
하지만 난 필요해
text
abc
이러한 Regex를 Java로 작성할 수 있습니까?
편집 : 실제적으로 괄호 있습니다 @{
및}@~enc~
실제 문자열 :
@{ ... bla ... @{text}@~enc~ jdjdj ... @{ kdkdkdkd aaa @{ abc }@~enc~
부정 문자 클래스 를 사용해야합니다 [^{}]
.
\{([^{}]*)}
[^{}]
문자 클래스는 임의의 문자 만 일치 {
와 }
.
자바 데모 :
String s = "{ ... bla ... {text} jdjdj ... { kdkdkdkd aaa { abc }";
Pattern pattern = Pattern.compile("\\{([^{}]*)}");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(1).trim());
}
String#trim()
캡처에서 후행 / 선행 공백을 제거 하는 데 사용할 수 있습니다 .
여러 문자 구분 기호 사이의 텍스트를 일치 시키려면 강화 된 탐욕스러운 토큰을 사용할 수 있습니다 .
Pattern pattern = Pattern.compile("(?s)@\\{((?:(?!@\\{|}@~enc~).)*)}@~enc~");
^^^^^^^^^^^^^^^^^^^^^^
다른 데모를 참조하십시오 . (?s)
수정 (설정과 동일 Pattern.DOTALL
플래그)을 만들어 .
도 일치 뉴 라인.
NB : {
Java regex 에서 기호 를 이스케이프하는 것을 잊지 마십시오 }
. 이스케이프 할 필요가 없습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다