我希望以下示例返回匹配项
- I like foobar.com
- 我喜欢 google.com 和foobar.com
- I like foobar.com和 google.com
- 我喜欢 foobargoogle.com 和 googlefoobar.com
- 我喜欢 yahoo.com 和foobar.com
- I like foobar.com和雅虎网站
- 我喜欢 foobaryahoo.com 和 yahoofoobar.com
我不希望以下示例返回匹配项
- I like 雅虎网站
- 我喜欢富巴雅虎网站
- I like 谷歌网站
- 我喜欢富巴谷歌网站
- I like 谷歌网站 and 雅虎网站
- 我喜欢富巴谷歌网站和 foobar雅虎网站
注意 - 这不是平等匹配,而是包含匹配
我尝试了以下正则表达式模式:
(?!(^.*((google)|(yahoo))\.com.*$))(^.*\w+\.com.*$)
但一旦出现“google.com”或“yahoo.com”,即使“foobar.com”出现在它之前,它也会因没有匹配而终止。
例如。我喜欢 foobar.com,但不喜欢 google.com
基本上,我希望它忽略字符串中任何位置的“google.com”和“yahoo.com”并检测任何其他类型:“\w+.com”。
Note:
-
谷歌网站 and 雅虎网站只是例子。因此,它应该忽略任何字符串长度的字母数字字符的匹配集
- 忽略大小写和空格
您可以通过 PCRE 动词来做到这一点(*跳过)(*F) https://stackoverflow.com/questions/24534782/how-do-skip-or-f-work-on-regex .
(?:google|yahoo)(?:\.com)?(*SKIP)(*F)|(?:(?!google|yahoo)\w)+\.com
^ ^ ^
|------Part you don't want-----------|------------Part you want--|
DEMO https://regex101.com/r/nN2yU4/1
解释:
(?:google|yahoo)(?:\.com)?
突然匹配google
or yahoo
带有以下可选选项的字符串.com
。查看演示here https://regex101.com/r/nN2yU4/2.
(?:google|yahoo)(?:\.com)?(*SKIP)(*F)|
以及以下 PCRE 动词(*SKIP)(*F)
会导致之前的匹配失败。以及以下内容|
OR 将匹配所有不跟随的边界google
or yahoo
字符串。查看演示here https://regex101.com/r/nN2yU4/3
(?:(?!google|yahoo)\w)+\.com
现在,正则表达式引擎会将匹配的边界视为起点,它突然匹配一个或多个单词字符,但不匹配google
or yahoo
.
-
\.com
有助于仅匹配以结尾的字符串.com
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)