2017-04-25 3 views
0

내가 자바 정규 표현식에 사용하기 시작했고 나는이 (인위적인 예)와 같은 패턴을 작성해야 찾을 :안 문자열 이스케이프 (백 슬래시 지옥)

C:\\\\windows\\\\system\\d+

일치하는

C:\windows\system32

미친 양의 백 슬래시없이 java 정규식을 사용할 수 있습니까?

+2

아니, 그런 다음에 그 읽기, 별도의 파일에 저장할 수 –

+2

이없는 (아마도 리소스로서). – yshavit

답변

1

사용 Pattern.quote(String s) 그것은 전달 된 문자열에 리터럴 문자를 모든 메타 문자를 취급

(문서에 대한 클릭) (하지만 여전히 리터럴 문자열 건설의 백 슬래시를 이스케이프해야합니다). 이를 통해 \\\\ 대신 \\을 입력하면 실제/리터럴 \을 정규식 패턴으로 나타낼 수 있습니다. 그러나 이는 다른 특수 문자도 그대로 해석한다는 것을 의미합니다 (예 : \d+).

하지만 당신의 예제에서

, 당신은 사용할 수 있습니다 :이와 Pattern.quote("C:\\windows\\system") + "\\d+";

테스트는 : System.out.println("C:\\windows\\system32".matches(Pattern.quote("C:\\windows\\system") + "\\d+"));

+0

\는 여전히 이스케이프 문자이므로 \\가 필요합니다. (또한, wtf는 주석에서 이스케이프 문자로 StackOverflow 백 슬래시를 사용합니까?) – Powerlord

+0

@Powerlord 죄송합니다 ... 네 말이 맞아! – sep1256

관련 문제