Regex 正则表达式-如何匹配>;电子邮件地址中的第一个标记?
我需要从电子邮件地址中删除最后一个标记,如下所示:Regex 正则表达式-如何匹配>;电子邮件地址中的第一个标记?,regex,Regex,我需要从电子邮件地址中删除最后一个标记,如下所示: foo+bar@baz.com => foo@baz.com foo+bar+baz@xyz.com => foo+bar@xyz.com foo@bar.com => foo@bar.com // no change 这个正则表达式可以工作,但它会删除这两个标记,即使它是ungreedy+?: \+{1}(.+?)@{1} 我尝试了反向前瞻,但它没有按预期工作,仍
foo+bar@baz.com => foo@baz.com
foo+bar+baz@xyz.com => foo+bar@xyz.com
foo@bar.com => foo@bar.com // no change
这个正则表达式可以工作,但它会删除这两个标记,即使它是ungreedy+?
:
\+{1}(.+?)@{1}
我尝试了反向前瞻,但它没有按预期工作,仍然删除了两个标记:
\+{1}.+(?!\+).+@{1}
您可以使用
\+[^+@]+@
并替换为@
见
详细信息
-一个加号\+
-1个或多个字符,而不是[^++]+
和+
@
-a@
(为了“锚定”搜索,我们需要用这个字符替换)@
@
之前的+
之后移除该零件,请使用
(.*)\+[^+@]+(@[^@]*$)
并替换为$1$2
。看
这里,
-组1:尽可能多地捕获任何0+个字符(.*)
-参见上面的模式\+[^++]+
-第2组:a(@[^@]*$)
,然后0+个字符,而不是@
,直到字符串结束@