带引号的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 楼答案
有两种方法:
可以检查开始和结束双引号前的字符是否为反斜杠:
[^\\]\"(.*?[^\\])\"
使用负lookback正则表达式:
(?<!\\)\"(.*?)(?<!\\)\"
其中
(?<!b)a
表示a
前面没有b
后者似乎效果更好,因为它还匹配空字符串