2009-11-15 4 views
0

특수 문자 []을 사용하는 문자열에 대한 정규 표현식을 만들고 싶습니다.자바 정규식, 표현식에 '['를 추가하는 방법

값은 "[action]"입니다.

표현식은 "[\\[[\\x00-\\x7F]+\\]]"입니다.

[] 앞에 \\을 추가하여 시도해 보았습니다.

하지만 작동하지 않습니다.

어느 누구도이 문제를 해결할 수 있습니까?

답변

3

대괄호 "[]"을 제거하고 싶을 것입니다. \\[\\]

이중 백 슬래시는 문자열에서 단일 백 슬래시를 평가합니다 regexps '에 그들은

+1

이와 같이, "\\\ [[\\ x00 - \\ x7F] + \\\]"처럼 보일 것입니다. – Gunslinger47

0

대괄호 앞에 하나의 백 슬래시를 붙이면됩니다.

두 개의 백 슬래시가 자동으로 이스케이프되므로 정규식 엔진은 \[을 확인합니다. [은 특수 문자입니다.

+0

이 자바 문자열 리터럴, 그래서 그는 하나의 백 슬래시를 보시려면 "정규식 엔진"의 순서를 이중 백 슬래시를 필요로한다. –

+0

아, 내 잘못, 나는 C# 축 어적 문자열에 regexes를 입력하는 데 익숙해 보인다. –

1

두 개의 백 슬래시 개폐 괄호 전에 동봉 된 문자 중 하나의 선택을 의미한다. 단일 백 슬래시는 대괄호를 이스케이프하므로 문자 클래스를 둘러싼 것으로 해석되지 않습니다. 문자 클래스를 선언 할 괄호에 대한

백 슬래시를 사용하지 않고 다음 Kleene star 연산자는 범위의 문자의 번호와 일치

[a-z] (당신이 좋아 할 수 있습니다 당신이 어떤 범위뿐만 아니라 a부터 z까지). 내 시스템에서

public class Regexp { 
    public static void main(final String... args) { 
     System.out.println("[action]".matches("\\[[a-z]*\\]")); 
    } 
} 

:

$ javac Regexp.java && java Regexp 
true