我试图从一个段落中提取gmail.com,我只希望那些不以@开头的字符串匹配.
示例:abc@gmail.com(不匹配); www.gmail.com(匹配此)
我尝试了以下内容:(?!@)gmail\.com但这不起作用.这与上面示例中突出显示的案例相匹配.有什么建议?
如果你的正则表达式支持它,你想要一个负面的lookbehind,(?<!@)gmail\.com并添加\bs以避免匹配foogmail.comz,如:(?<!@)\bgmail\.com\b
[^@\s]*(?<!@)\bgmail\.com\b
Run Code Online (Sandbox Code Playgroud)
假设您要在较长的文本正文中查找字符串,而不是验证整个字符串.
说明:
[^@\s]* # match any number of non-@, non-space characters
(?<!@) # assert that the previous character isn't an @
\b # match a word boundary (so we don't match hogmail.com)
gmail\.com # match gmail.com
\b # match a word boundary
Run Code Online (Sandbox Code Playgroud)
乍看之下,(?<!@)外观断言似乎没有必要,但事实并非如此 - 否则其中的gmail.com部分abc@gmail.com会匹配.
| 归档时间: |
|
| 查看次数: |
9016 次 |
| 最近记录: |