2017-03-02 2 views
0

따옴표가 들어있는 문자열 값을 가져 오기 위해 정규식을 사용하고 있습니다. 아래 예제에서 나는 "요약은 여기있다"라는 값 요약 키를 ​​얻고 싶습니다. 현재 아래 프로그램의 출력으로 "여기 있습니다"만 있습니다. 나는 큰 따옴표와 큰 따옴표를 모두 빠져 나가기를 원합니다. . 어떤 도움따옴표가 들어있는 문자열을 가져 오는 정규식

String in = "summary = \"Here is \"summary\""; 

    Pattern p = Pattern.compile("'(.*?)'|\"(.*?)[^\\\"]+\""); 
    Matcher m = p.matcher(in); 

    while(m.find()) { 
     System.out.println(m.group()); 
    } 

감사

+0

사용 욕심 일치 :.'패턴 P =는 Pattern.compile (" '. (*)'| \"(*) \ ""); ' –

+0

3 개의'\ "'가 들어있는 동안 입력을 수정합니까? – MohaMad

+0

욕심이 잘 작동합니다. Wiktor에게 감사드립니다. – AAjit

답변

1

사용이 하나.

/\\["']((?:[^"\\]|\\.)*)\\["']/ 

데모 : https://regex101.com/r/033EKx/1

기억 : 정규식을 구축하려고 할 때 "에 의해, \\\ 및 기타 특수 문자 ("')로 변경해야

rStr = "/\\\\[\"\']((?:[^\"\\\\]|\\\\.)*)\\\\[\"\']/" ; 
+0

감사합니다. 내 솔루션에 맞게 비트가 바뀌 었습니다. "((? : [^"\\] | \\.) *) " – AAjit

+0

"main "스레드의 Java Exception 예외 발생 java.util.regex.PatternSyntaxException : 인덱스 22 [(': [^ "\] | \.) *) ["'] – AAjit

+0

"문자열 정의자를 사용하여 문자열 정규식 패턴을 변환하는 중 문제가 발생했습니다. 일부 문자열을 놓쳤습니다. 문자열 @AAjit은 무엇입니까? – MohaMad

관련 문제