有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带引号的Java正则表达式字符串,但有附加要求

你好,这是我的问题,如果你能帮忙,我将不胜感激

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

如果我对照{$= "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"

这是我的问题:有没有办法让regex认识到

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

整体而言


共 (1) 个答案

  1. # 1 楼答案

    有两种方法:

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

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

    2. 使用负lookback正则表达式:

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

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

    后者似乎效果更好,因为它还匹配空字符串