我正在尝试创建一个正则表达式,该正则表达式将匹配两个单词(按顺序(,但它们之间不能有另一个单词/字符。
I need a match when "Spanish" & "Audio" are not separated by "<br />"
测试字符串:
Dolby Digital Audio 2.0 Language French<br /> Dolby Digital 5.1
Audio Language Spanish<br /> Dolby Digital Audio Language 7.1
English<br /> Subtitles Language Spanish <br />
误报:
/Audio.*((?!<br >).).*Spanish/i
我在这里做错了什么?
如果我
正确理解了您的问题,您希望在"音频"和"西班牙语"之间捕获一个或多个单词,除非这些单词包含<br />
。
怎么了?
前.*
匹配<br />
,然后负前瞻匹配<br />
和Spanish
之间的空间。
该怎么解决?
Audios*((?:(?!<br />).)*?)s*Spanish
分解了一点:
Audio
s*
( # the capture group
(?:
(?!<br />). # any character such that it doesn't begin the string "<br />"
)*? # 0+ times; lazy
)
s*
Spanish
你可以看到它在行动。
<小时 />以上是经过编辑的帖子;以前的迭代:
Audios*((?!s*<br />).*?)s*Spanish
感谢克里斯蒂安指出,如果<br />
前面有非空格字符,例如 Audio foo <br /> Spanish
.
Audios*((?!.*<br />).*?)s*Spanish
这仍然有很大的缺陷,如果在"西班牙语"之后有一个尾随<br />
,就会失败。