首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配两个单词而不是由第三个单词分隔的Regex

匹配两个单词而不是由第三个单词分隔的Regex
EN

Stack Overflow用户
提问于 2017-03-20 23:46:34
回答 1查看 126关注 0票数 1

我正在尝试创建一个正则表达式,它将匹配两个单词(按顺序排列),但它们之间不能有另一个单词/字符。

代码语言:javascript
复制
I need a match when "Spanish" & "Audio" are not separated by "<br />"

测试字符串:

代码语言:javascript
复制
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 />

假阳性:

代码语言:javascript
复制
/Audio.*((?!\<br\ \>).).*Spanish/i

我在这里做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 00:13:02

如果我正确理解你的问题,你想捕捉一个或多个单词之间的“音频”和“西班牙语”,除非这些词包含<br />

有什么问题吗?

第一个.*匹配<br />,然后负查找匹配<br />Spanish之间的空间。

该怎么办才能解决呢?

代码语言:javascript
复制
Audio\s*((?:(?!<br\ \/>).)*?)\s*Spanish

分崩离析:

代码语言:javascript
复制
Audio
\s*
(                    # the capture group
  (?:
    (?!<br\ \/>).    # any character such that it doesn't begin the string "<br />"
  )*?                # 0+ times; lazy
)
\s*
Spanish

你可以看到它的行动

以上是一个经过编辑的帖子;以前的迭代:

代码语言:javascript
复制
Audio\s*((?!\s*\<br\ \/>).*?)\s*Spanish

感谢克里斯蒂安指出,如果<br />前面有非空格字符,例如Audio foo <br /> Spanish,上面的内容就会匹配。

代码语言:javascript
复制
Audio\s*((?!.*\<br\ \/>).*?)\s*Spanish

如果在“西班牙语”之后有一个落后的<br />,这仍然是相当有缺陷的,并且失败了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42916014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档