Regex 正则表达式,匹配两个不被第三个单词分隔的单词
我正在尝试创建一个正则表达式,该正则表达式将匹配两个单词(按顺序),但它们之间不能有其他单词/字符Regex 正则表达式,匹配两个不被第三个单词分隔的单词,regex,Regex,我正在尝试创建一个正则表达式,该正则表达式将匹配两个单词(按顺序),但它们之间不能有其他单词/字符 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 Languag
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 />
杜比数字音频2.0语言法语杜比数字5.1 音频语言西班牙语杜比数字音频语言7.1 英语
字幕语言西班牙语
假阳性:
/Audio.*((?!\<br\ \>).).*Spanish/i
/Audio.*(?!\).*西班牙语/i
我做错了什么 如果我正确理解您的问题,您希望捕获一个或多个介于“音频”和“西班牙语”之间的单词,除非这些单词包含
有什么问题吗?
第一个*
匹配
,然后负向前看匹配
和西班牙语之间的空格
如何解决这个问题?
Audio\s*((?:(!))*?)\s*西班牙语
有点细分:
音频
\*
(#捕获组
(?:
(?!)。#任何不以字符串“
”开头的字符
)*?0次以上;懒惰
)
\*
西班牙的
你可以
以上是一篇经过编辑的文章;以前的迭代:
Audio\s*((?!\s*\).*?\s*西班牙语
感谢Christian指出,如果
前面有非空格字符,例如音频foo
西班牙语,则上述内容将匹配
Audio\s*((?!.\).*?\s*西班牙语
如果在“西班牙语”后面有一个尾随的
,这仍然是非常有缺陷和失败的。使用DOM解析器逐个提取文本节点,然后搜索每个文本节点以获得所需内容。@CasimiretHippolyte,而我通常是第一个使用“不要使用正则表达式解析HTML”的人,这似乎是一个非常简单的用例,可能不需要解析器(假设OP只做了一次对信息的grepping,而不是将其合并到一个更大的、重复的查询中)。请保持简单-@0m3r您的链接没有帮助,因为它无法识别测试字符串并不代表可能遇到的所有字符串。请删除您的评论。谢谢您的提示。我正在尝试检查xml提要字段是否匹配。如果字段中的任何位置出现“音频”和“西班牙语”字样,并且没有换行符(“
”它们之间应该有一个正匹配。正则表达式是我唯一的选择。如果我的问题不够清楚,很抱歉。我实际上花了很多心思。你如何排除匹配,比如说,Audio foo
bar西班牙语
?它适用于我的问题中所示的测试字符串。但是,由于某种原因,如果整个测试字符串只有一行:>杜比数字音频2.0语言法语
杜比数字5.1音频语言西班牙语
杜比数字音频语言7.1英语
字幕语言西班牙语
@dyna Yikes!我没有理由不检查那个案例,也没有理由不尝试三次,我想我只是休息一天。我知道我想得再仔细一点,并改变量词,使正则表达式准确地反映问题。@KernelPanic非常感谢。这确实很好。我希望你的晚餐很好。@KernelPanic:为什么要插入外部捕获组?如果没有它,你不会得到同样的结果吗?