반응형
괄호 일치를위한 정규식
문자열에서 '('를 일치시키는 정규식은 무엇입니까?
다음은 시나리오입니다.
나는 끈이있다
str = "abc(efg)";
'('
정규식 을 사용하여 문자열을 분할하고 싶습니다.
Arrays.asList(Pattern.compile("/(").split(str))
하지만 다음 예외가 발생합니다.
java.util.regex.PatternSyntaxException: Unclosed group near index 2
/(
탈출 '('
이 작동하지 않는 것 같습니다.
두 가지 옵션 :
첫째, 백 슬래시를 사용하여 이스케이프 할 수 있습니다.\(
또는 단일 문자이므로 이스케이프 할 필요가없는 문자 클래스에 넣을 수 있습니다. [(]
- 백 슬래시를 사용하여 메타 문자를 이스케이프 할 수 있으므로
(
패턴 과 일치시킬 수 있습니다\(
. - 많은 언어에는 .Net
Regex.Escape
또는 Java 와 같은 빌트인 이스케이프 기능 이 있습니다.Pattern.quote
- 일부 플레이버는
\Q
및을 지원 하며\E
사이에 리터럴 텍스트가 있습니다. - 일부 플레이버 (예 : VIM)는
(
문자 그대로 일치 하며\(
그룹 캡처에 필요 합니다.
참고 항목 : 정규식 기본 구문 참조
솔루션은 열기 및 닫기 괄호와 일치하는 정규식 패턴으로 구성됩니다.
String str = "Your(String)";
// parameter inside split method is the pattern that matches opened and closed parenthesis,
// that means all characters inside "[ ]" escaping parenthesis with "\\" -> "[\\(\\)]"
String[] parts = str.split("[\\(\\)]");
for (String part : parts) {
// I print first "Your", in the second round trip "String"
System.out.println(part);
}
Java 8 스타일로 작성하면 다음과 같이 해결할 수 있습니다.
Arrays.asList("Your(String)".split("[\\(\\)]"))
.forEach(System.out::println);
분명하길 바랍니다.
특수 문자에는 '\'를 사용해야합니다. 따라서 괄호 일치-/ \ (/
(
정규식에서 특별 하기 때문에 \(
일치 할 때 이스케이프해야합니다 . 그러나 사용하는 언어에 따라 (
문자열 메서드와 같은 문자열 메서드 index()
나 해당 위치를 찾을 수있는 다른 메서드 와 쉽게 일치시킬 수 있습니다 (
. 때때로 정규식을 사용할 필요가 없습니다.
참조 URL : https://stackoverflow.com/questions/5633533/regular-expression-for-matching-parentheses
반응형
'IT이야기' 카테고리의 다른 글
R에서 행 인덱스 번호를 얻는 방법 (0) | 2021.03.25 |
---|---|
Javascript에서 var를 사용하는 경우 (0) | 2021.03.25 |
비트 엔디안이 비트 필드에서 문제가 되는 이유 (0) | 2021.03.25 |
java.lang.RuntimeException : Result ResultInfo {who = null, request = 1888, result = 0, data = null} 에러 (0) | 2021.03.24 |
Javafx 2 클릭 및 더블 클릭 (0) | 2021.03.24 |