我试图从一个段落中提取 gmail.com ,我只希望那些不以 @ 开头的字符串匹配。
示例:abc@gmail.com(与此不符); www.gmail.com(匹配此)
我尝试了以下内容:(?!@)gmail\.com
但这不起作用。这与上面示例中突出显示的案例相匹配。有什么建议吗?
答案 0 :(得分:7)
如果你的正则表达式支持它,你需要一个负面的背后隐藏,例如(?<!@)gmail\.com
并添加\b
以避免匹配foogmail.comz
,例如:(?<!@)\bgmail\.com\b
答案 1 :(得分:6)
[^@\s]*(?<!@)\bgmail\.com\b
假设您要在较长的文本正文中查找字符串,而不是验证整个字符串。
说明:
[^@\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
乍看之下,(?<!@)
外观断言似乎没有必要,但事实并非如此 - 否则gmail.com
abc@gmail.com
部分会匹配。
答案 2 :(得分:1)
/^.*?(?<!@)gmail\.com$/