2014-10-14 3 views
-1

죄송합니다. 작동하는 항목을 찾을 수 없어서이 질문을하고 있습니다. 나는 피트 ("), 인치 (') 또는 쉼표 (,)를 가질 수있는 기본 문자열을 가지고 있습니다. 내가하고 싶은 것은 후 처리하기 전에 그들을 식별하고 이스케이프 처리하는 것입니다.Java에서 큰 따옴표, 작은 따옴표 및 쉼표를 식별하고 이스케이프 처리합니다.

+0

왜 당신이 그들을 탈출 할 수 있습니까? 'String # replace' 메서드를 사용해 보셨습니까? – anubhava

+0

"Regex와 관련하여 운이 없다"는 것은 무엇을 의미합니까? \ '을 시도하고 정규식이 실패했다는 뜻입니까? 탈출을 위해 이중 백 슬래시를 시도 했습니까? – MarsAtomic

+1

코드가있는 것처럼 보이지 않으므로 문제 일 수 있습니다. –

답변

0

누군가가 귀하의 의견에 암시를 주었지만, String # replace는 하나의 문자 만 사용하고 있기 때문에 완전히 정확하지는 않습니다. 문자 "는"\ "와 관련하여, 올바르게 이스케이프되지 않은 일부 정규 표현식을 반환 교체

당신이 어떤 함수 foo를 (말해봐), 또는"\ ' "문자 :.

String regexp = Bar.foo(); 
regexp = regexp.replaceAll("(\\\"|\\\')", "\\\\$0"); 
Pattern yourPatternName = Pattern.compile(regexp); 

약간의 설명 : 자바에서는 n과 같은 특정 특수 문자를 줄 바꿈 ('\ n')으로, 또는 t를 탭 ('t')으로 이스케이프해야합니다. 이미 이스케이프하고 있기 때문에 더 이상 문자 '\'+ 'n'이 아닙니다. 따라서 정규 표현식을 컴파일 할 때 패턴 # 컴파일러가 개행 문자 인 "\ n"이 아니라 한 문자를 볼 수 있도록 두 번째로 이스케이프 처리해야합니다. '\ n'문자를 이스케이프하려면 새 '\'문자로 입력해야합니다. java.lang.String을 수행 중이므로 한 번 더 슬래시를 이스케이프 처리해야합니다.

쉼표의 경우 해당 항목을 벗어날 필요가 없습니다. 특수 문자 만 이스케이프해야합니다. 그 패턴 인식 것들의 목록은 여기에서 확인할 수 있습니다

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

관련 문제