正则表达式从字符串中查找电子邮件地址
我的意图是从网页获取电子邮件地址。我有页面来源。我正在逐行阅读页面源代码。现在,我想从我正在阅读的当前行中获取电子邮件地址。当前行可能有也可能没有电子邮件。我看到了很多正则表达式示例。但是它们大多数用于验证电子邮件地址。我想从页面来源获取电子邮件地址,但不进行验证。它应该在http://emailx.discoveryvip.com/正常工作
一些示例输入行是:
1)<p>Send details to <a href="mailto:%72%65%62%65%6b%61%68@%68%61%63%6b%73%75%72%66%65%72.%63%6f%6d">neeraj@yopmail.com</a></p>2)<p>Interested should send details directly to <a href="http://www.abcdef.com/abcdef/">www.abcdef.com/abcdef/</a>. Should you have any questions, please email <a href="mailto:%6a%6f%62%73@%72%65%6c%61%79.%65%64%75">neeraj@yopmail.com</a>.
3)Note :- Send your queries at neeraj@yopmail.com for more details call Mr. neeraj 012345678901.
我想从示例1,2和3获得neeraj@yopmail.com。我使用的是Java,但是rexexp不好。帮我。
回答:
您可以使用RFC 2822来验证电子邮件地址格式:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
这是来自regular-expressions.info的解释:
此正则表达式包含两部分:@之前的部分和@之后的部分。@之前的部分有两种选择:它可以由一系列字母,数字和某些符号(包括一个或多个点)组成。但是,点可能不会连续出现或出现在电子邮件地址的开头或结尾。另一种选择是将@之前的部分用双引号引起来,从而允许在引号之间使用任何ASCII字符串。空格字符,双引号和反斜杠必须使用反斜杠转义。
您可以在此处查看:表格示例。
以上是 正则表达式从字符串中查找电子邮件地址 的全部内容, 来源链接: utcz.com/qa/411657.html