我正在尝试创建一个正则表达式,它将匹配两个单词(按顺序排列),但它们之间不能有另一个单词/字符。
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我在这里做错什么了?
发布于 2017-03-21 00:13:02
如果我正确理解你的问题,你想捕捉一个或多个单词之间的“音频”和“西班牙语”,除非这些词包含<br />。
有什么问题吗?
第一个.*匹配<br />,然后负查找匹配<br />和Spanish之间的空间。
该怎么办才能解决呢?
Audio\s*((?:(?!<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你可以看到它的行动。
以上是一个经过编辑的帖子;以前的迭代:
Audio\s*((?!\s*\<br\ \/>).*?)\s*Spanish感谢克里斯蒂安指出,如果<br />前面有非空格字符,例如Audio foo <br /> Spanish,上面的内容就会匹配。
Audio\s*((?!.*\<br\ \/>).*?)\s*Spanish如果在“西班牙语”之后有一个落后的<br />,这仍然是相当有缺陷的,并且失败了。
https://stackoverflow.com/questions/42916014
复制相似问题