4

多行测试字符串:

dkdkdkdk dkdkdkdk dkdkdkd dkdkdkd "hello" dkdkdkdkdk dkdkdk "goodbye.hello"  dkdkdkd kdkdkd kdkdkdk "hello.goodbye.hello" dddd "test" ssss "http:x-y.f/z/z" "" "."
"http:/dkdkd/dkdkdk/dkdkdkdkdkdk.g"

我想匹配每个包含“ hello”的引用字符串

这匹配每个引用的字符串

\"(.+?)\"

这匹配每个包含 hello 的引用字符串

\"(.*?)hello(.*?)\"

但这并不匹配每个不包含 hello 的引用字符串

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

谢谢你的帮助!

4

2 回答 2

3

我最初的答案是每次点匹配时都需要应用负前瞻,如下所示:

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

然而,在包含多个引号字符串的目标中,这个正则表达式存在问题——一个字符串的右引号和另一个引号的开始字符串之间的空格也是这个表达式的“带引号的字符串”。

因此,我的建议是使用简单的"[^"]*"模式从您的目标中提取所有引用的字符串,然后评估您想要禁止的单词的每个匹配项。

于 2010-01-05T23:00:53.510 回答
0

试试这个

\"((?!hello).)*?\"
于 2010-01-05T23:04:51.927 回答