正则表达式匹配双引号不符合斜线字符

时间:2016-06-10 03:33:10

标签: java regex

我有这样的字符串:

  

“abcd”efg \“hi”jklm“

我想在两个第一个字符"之间获取子字符串,而不是\" 例如,在上面的字符串中,我想获得abcd\" efg\" hi 目前,我将\"替换为另一个字符,然后使用正则表达式"([^"]*)"提取两个第一个字符"之间的子字符串。有没有办法直接使用正则表达式而不用另一个字符替换\"

1 个答案:

答案 0 :(得分:6)

使用此正则表达式:

[^\\]?"(.*?[^\\])"

<强>解释

[^\\]?   match an optional single character which is not backslash
"(.*?    match a quote followed by anything (non-greedy)
[^\\])"  match a quote preceded by anything other than backslash

此正则表达式将匹配开头报价和没有反斜杠的结束报价之间的最小内容。

Regex101