2010-02-14 136 views
1

我想写以下正则表达式:如何使用正则表达式从邮寄地址提取信息链接

样式1:

至mailto:[email protected]

regex1应匹配所有以mailto:

模式2:

的mailto:[email protected]主题=印度&体=你好

regex2应(后弦?)提取查询字符串

+1

/^mailto:(.+?)$/? – dangerstat 2010-02-14 13:41:55

+0

对于Q2,请参阅http://stackoverflow.com/questions/1667278/parsing-query-strings-in-java – kennytm 2010-02-14 14:32:41

回答

4

无需常用表达。只需匹配前7个字符为“mailto:”的任何字符串即可。

如果你坚持使用正则表达式,表达式将是“mailto:。*”。如果你只是想保留什么是后 “的mailto:”,这将是 “电子邮件地址:(。*)”

+0

+1你可以看看正则表达式2 – 2010-02-14 13:44:59

+0

你真的想用正则表达式来拉开一个查询串?有专门设计的图书馆可以处理所有边缘案例。 – 2010-02-14 14:33:54

+0

对于第二种情况,请参阅http://stackoverflow.com/questions/2261222/how-to-use-regular-expressions-to-extract-information-from-mailto-links/2261448#2261448 – Daniel 2010-02-14 15:21:35

0
  1. 的mailto:+或至mailto:[^ \ S] +
  2. 的mailto: ??+ \(+)或邮寄地址:?[^ \ S] + \ [^ \ S] +
1

正则表达式实在是没有必要的数组。一个简单的String.startsWith可以满足第一个匹配的要求,您可以使用URL类来提取查询。

String string = "mailto:[email protected]?subject=Indian&body=hello"; 
if (string.startsWith("mailto:")) { 
    try { 
     URL url = new URL(string); 
     String query = url.getQuery(); // Here is your query string. 

    } catch (MalformedURLException e) { 
     throw new AssertionError("This should not happen: " + e); 
    } 
} 
相关问题