【问题标题】:how is it possible to match string like this in one regular expression in java如何在java中的一个正则表达式中匹配这样的字符串
【发布时间】:2012-04-08 06:01:00
【问题描述】:

我的输入 String = "whatever text href=\"http://somewhere.com?id=name@domain.com\"whatever text"

我需要在组(1)中匹配整个链接http://somewhere.com?id=name@domain.com

并在一个正则表达式中匹配 group(2) 中的 name@domain.com 等电子邮件

现在我使用 2 个匹配器,一个用于链接,另一个用于电子邮件,如下所示

匹配器电子邮件 = MAILS.matcher(string); 匹配器 href = LINKS.matcher(string);

问题是为了提高效率,是否可以将其合二为一。

感谢提前

【问题讨论】:

  • 有点简单。如果您开始对 URL 可以包含的字符感到恐慌,请尝试猜测它不包含哪些字符(例如空格,但这取决于您的 URL 是否经过编码)

标签: java regex email hyperlink


【解决方案1】:

它很粗糙,但你可以从它开始:

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

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

【讨论】:

  • 为什么要使用 Ruby 网络服务来测试 Java 正则表达式?
  • 为什么不呢?正则表达式它不仅仅是 java
【解决方案2】:
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 找到专注于正则表达式的精彩教程

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多