Java RegEx字符串在引号内但有额外要求

时间:2017-03-21 18:20:56

标签: java regex

你好,这是我的问题,如果你能提供帮助,我将不胜感激。

这是我的正则表达式:\"(.*?)\"我的目标是在""内收集每个单词等。

如果我针对{$= "a=" "a" 0 @paramGet ", b=" "b" 0 @paramGet ", rezultat=" "a" 0 @paramGet "b" 0 @paramGet + $}进行检查并收集我得到的所有群组:

a=  a  , b=  b  ,rezultat=  a   b

但如果对{$= "a=" "a" 0 @paramGet ", b\"=" "b" 0 @paramGet ", rezu\"ltat=" "a" 0 @paramGet "b" 0 @paramGet + $}进行检查,我会得到:

"a="    "a"    ", b\"    " "     " 0 @paramGet "     "ltat="    "a"   "b"

这是我的问题:有没有办法让正则表达式识别

a=  a  , b\"=  b  ,rezu\"ltat=  a   b

整体?

1 个答案:

答案 0 :(得分:2)

有两种方法可以做到:

  1. 您可以检查开始和结束双引号之前的字符是否不是反斜杠:

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

  2. 使用负面的lookbehind正则表达式:

    (?<!\\)\"(.*?)(?<!\\)\"

    其中(?<!b)a表示a前面没有b

  3. 后者似乎效果更好,因为它也匹配空字符串。