2012-10-17 2 views
2

자바가 허용하는 정확한 문자열 패턴을 찾는 정규식 메서드를 갖고 싶습니다. 하지자바에서 문자열 일치와 동일한 정규 표현식 쓰기

STRINGS = \"[a-zA-Z0-9" "]*\" 

같은 문자열을 일치 :

"this is a string" 

"thisisstring" 

하지만 이스케이프 문자를 지원하지 않습니다 같은 문자열 있도록 :

"this is a sting \"\"" 

지금은 정규식이 실패합니다. 이 문자열은 다음과 같습니다.

"this is a sting \"\" 

유효하지 않습니다. 정규식에서 이러한 조건을 잡을 수있는 방법이 있습니까?

미리 감사드립니다.

+0

텍스트를''' – Anirudha

답변

1

정규식 문자열 (대괄호 사이)에 \\\\을 포함시켜야합니다. \\은 Java 문자열에서 \를 이스케이프하는 것이며 정규 표현식에서 백 슬래시를 이스케이프 처리해야하기 때문에 2 \\이 필요합니다.

0

가상 코드이기 때문에 문자열이 무엇인지 알기가 어렵습니다. 그러나이 모든 APHA-수치와 큰 따옴표 일치해야합니다 :

String pattern = "[a-zA-Z0-9\" ]*"; 
Pattern.matches(pattern, "\"this is a sting \""); 

을 그리고 이것은 당신이 때문이다 모든 알파 수치, 큰 따옴표, 또는 \"

String pattern = "([a-zA-Z0-9\" ]|\\\\\")*"; 
System.out.println(Pattern.matches(pattern, "\"this is a sting \\\"")); 

의 조합과 일치해야합니다 문자열에 대해 \을 한 번 이스케이프하고 정규 표현식 파서에 대해 한 번 이스케이프 처리합니다 (따라서 문자열에 \과 일치하는 행에 4 \이 끝납니다).