Java RegEx可以解析这些类型字符串吗?

时间:2017-03-30 16:09:14

标签: java regex

我正在尝试使用Java的模式& Matcher课程用来解析电话号码或来自字符串的电子邮件:

        Pattern pattern = Pattern.compile(  "(.*):(\\s*)(.*)(\\s.*)$");
    Matcher matcher = pattern.matcher(parties);
    if (matcher.find())
    {
        return matcher.group(3);
        //group(2) matches friendly name in Parties string
    }

它接近工作但在所有情况下都不完全匹配。以下是我需要解析的一些示例:

实施例。 1"来自:+19255551212 MARY-SUE"需要返回" + 19255551212"

实施例。 2"来自:someone@gmail.com"需要返回" someone@gmail.com"

实施例。 3" To:+1(415)233-1212 Sally"需要返回" +1(415)233-1212"

目前,上述代码似乎很接近但不太正确。它返回:

实施例。 1:+19255551212 MARY -

实施例。 2:someone@gmail.com

实施例。 3:+1(415)233-1212

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:3)

对于您给出的示例,此正则表达式应该起作用:

^(?:From|To):\s+(\+?[()\d\s-]*\d+|[^\s@]+@\S+)\b

RegEx Demo

尽管请注意,电话号码和电子邮件地址可能会有很大差异,而且可能需要根据您的输入进一步调整此正则表达式。