正则表达式获取包含引号的字符串

正则表达式获取包含引号的字符串

问题描述:

我正在使用正则表达式来获取包含引号的字符串值。在下面的例子中,我想把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

使用这一个:

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

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

记住:当试图建立正则表达式通过"\应更改为\\和其他特殊字符("'

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

谢谢。我改变了一下以适应我的解决方案“((?:[^”\\] | \\。)*)“ – AAjit

+0

在Java线程”main“中异常获取异常java.util.regex.PatternSyntaxException:未封闭的字符类索引22 [“']((?:[^”\] | \。)*)[''] – AAjit

+0

问题是将字符串正则表达式模式转换为字符串定义符, – MohaMad