我需要从纯文本段中删除电子邮件地址。我用Google搜索并搜索了这个网站并找到了很多建议 - 我都无法开展工作。我正在使用这样的代码:
Imports System.Text.RegularExpressions
Dim strEmailPattern As String = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"
Dim senText As String = "blah blah blah blah blah someone@somewhere.com"
Dim newText As String = String.Empty
newText = Regex.Replace(senText, strEmailPattern, String.Empty)
在调用Regex.Replace之后,newText字符串仍然包含完整的senText字符串,包括电子邮件。我以为这是我正在使用的正则表达式模式,但我尝试了很多,所以也许我在代码中遗漏了一些东西?
答案 0 :(得分:1)
这个posix正则表达式应该匹配所有提供的电子邮件
@
@
符号周围有一系列字符,包括字母,数字,连字符和点,而不是由任何非字母字符开头。正则表达式
([[:alpha:]][[:alnum:].-]+@)+[[:alpha:]][[:alnum:].-]+
这可能也有效
([a-zA-Z][[a-zA-Z0-9].-]+@)+[a-zA-Z][a-zA-Z0-9.-]+
较短的版本(如评论中)将是
(\w[\w.-]+@)+\w[\w.-]+
但是这会匹配更多无效的电子邮件。
我正在处理的模式将匹配大多数电子邮件地址。如果您确实想要匹配所有符合RFC-822的电子邮件,请考虑使用pattern here。它是一个6425字符长的正则表达式,匹配所有标准的电子邮件地址。但是要洁具,它会执行得很慢!
答案 1 :(得分:-1)
你的正则表达式失败会有各种各样的极端情况。
你应该像这个一样简单
(?<=^|\s)[^@]+?\@[^@]+?(?=$|\s)