2017-03-02 284 views
0

我正在使用正則表達式來獲取包含引號的字符串值。在下面的例子中,我想把value summary鍵作爲「Here is」summary「。目前我只能得到」Here is「作爲下面程序的輸出結果。我希望避免所有在雙引號之間的雙引號。 。正則表達式獲取包含引號的字符串

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

它是否正確輸入,而包含三個'\''? – MohaMad

+0

貪婪的工作也很好。謝謝Wiktor。 – AAjit

回答

1

使用這一個:

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

演示:https://regex101.com/r/033EKx/1

記住:當試圖建立正則表達式通過"\應更改爲\\和其他特殊字符("'

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

謝謝。我改變了一下以適應我的解決方案「((?:[^」\\] | \\。)*)「 – AAjit

+0

在Java線程」main「中異常獲取異常java.util.regex.PatternSyntaxException:未封閉的字符類索引22 [「']((?:[^」\] | \。)*)[''] – AAjit

+0

問題是將字符串正則表達式模式轉換爲字符串定義符, – MohaMad

相關問題