如何使用正则表达式从mailto链接中提取信息

时间:2010-02-14 13:38:55

标签: java regex

我想为以下内容编写一个正则表达式:

  

样式1:

     

的mailto:abc@gmail.com

regex1应匹配以mailto:

开头的所有字符串
  

PATTERN2:

     ?

的mailto:abc@gmail.com受试者=印度&安培;主体=你好

regex2应该提取查询字符串(后面的字符串?)

4 个答案:

答案 0 :(得分:4)

不需要正则表达式。只需匹配前七个字符为“mailto:”的任何字符串。

如果您坚持使用正则表达式,则表达式为“mailto:。*”。如果你只想保留“mailto:”之后的内容,那就是“mailto:(。*)”

答案 1 :(得分:1)

首先,您可以使用String.startsWith(String prefix)

第二个可能修剪字符串为“?”然后使用String.split(“& | =”);和你一起排队 [主题,印度,身体,你好]

http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)

答案 2 :(得分:1)

正则表达式确实不是必需的。一个简单的String.startsWith就足够了第一个匹配,你可以使用URL类来提取查询。

String string = "mailto:abc@gmail.com?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);
    }
}

答案 3 :(得分:0)

  1. mailto:。+或mailto:[^ \ s] +
  2. mailto:。+?\?(。+)或mailto:[^ \ s] +?\?[^ \ s] +