如何在java中的一个正则表达式中匹配这样的字符串

时间:2012-03-23 16:51:16

标签: java regex email hyperlink

我的输入字符串=“无论文字href = \”http://somewhere.com?id = name@domain.com \“无论文字”

我需要匹配组(1)

中的整个链接http://somewhere.com?id=name@domain.com

并在一个正则表达式

中匹配组(2)中的name@domain.com等电子邮件

现在我使用2个matcher一个用于链接,另一个用于电子邮件,如下面

Matcher email = MAILS.matcher(string);  Matcher href = LINKS.matcher(string);

问题是,为了提高效率,可以将它与一个结合起来。

感谢提前

2 个答案:

答案 0 :(得分:1)

这非常粗糙,但你可以用它来开始:

/(http:\/\/[a-z]*\.(com)\?[a-z]+=[a-z]+@[a-z]+\.(com))/i

您可以使用http://rubular.com/来测试您的表达式

答案 1 :(得分:0)

href=\\"(http://[A-Za-z0-9\.-]+\.[A-Za-z]{2,4}\?id=([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Za-z]{2,4}))\\"

\ 1是链接

\ 2是id(电子邮件地址)

链接可以由字母,数字,。 -

链接顶级域名可以是任何2,3或4个字母的字符串。

电子邮件地址部分应该能够匹配99%的电子邮件地址。

可以在http://www.regular-expressions.info/tutorial.html

找到关注正则表达式的精彩教程