Java 给定SMS字符串的正则表达式是什么

Java 给定SMS字符串的正则表达式是什么,java,android,regex,sms,Java,Android,Regex,Sms,“我的字符串”是一条短信,它可以采用以下两种格式之一: 潜在客户短信: 您已收到1条潜在客户 标题:我的潜在客户 潜在客户id:12345-2365 警报设置id:890 回复短信: 您已收到1封回复 标题:我的答复 回复id:12345-2365 广告id:890 实际上,我正在解析SMS以将值存储在数据库中的各个字段中。我想使用正则表达式来解析逻辑。正如您在上面所看到的,短信息通过潜在客户或回复进行区分,并且字段因其不同而不同(粗体)。我的问题是如何使用正则表达式来区分这两种SMS类型。例如

“我的字符串”是一条短信,它可以采用以下两种格式之一:

潜在客户短信:
您已收到1条潜在客户
标题:我的潜在客户
潜在客户id:12345-2365
警报设置id:890

回复短信:
您已收到1封回复
标题:我的答复
回复id:12345-2365
广告id:890

实际上,我正在解析SMS以将值存储在数据库中的各个字段中。我想使用正则表达式来解析逻辑。正如您在上面所看到的,短信息通过潜在客户或回复进行区分,并且字段因其不同而不同(粗体)。我的问题是如何使用正则表达式来区分这两种SMS类型。例如,如果我想在SMS字符串中区分lead id和reply id,那么正则表达式字符串是什么

注意:我知道还有另一种方法叫做String.split(),但是基于它编写的代码太长太复杂了。所以使用正则表达式

感谢和问候

Sohaib Rahman

我使用此代码提取消息的ID值并区分消息类型。我使用的代码如下:

    String lead = "You have received 1 lead\ntitle:my lead\nlead id:12345-2365\nalert setting id:890";
    String reply = "You have received 1 reply\ntitle:my reply\nreply id:12345-2365\nad id:890\n";

    Pattern leadPattern = Pattern.compile("lead id:\\s*(\\d{5}-\\d{4})", Pattern.MULTILINE);
    Matcher leadMatcher = leadPattern.matcher(lead);
    if (leadMatcher.find())
    {
        System.out.println("Lead: " + leadMatcher.group(1));
    }


    Pattern replyPattern = Pattern.compile("reply id:\\s*(\\d{5}-\\d{4})", Pattern.MULTILINE);
    Matcher replyMatcher = replyPattern.matcher(reply);
    if (replyMatcher.find())
    {
        System.out.println("Reply: " + replyMatcher.group(1));
    }

    System.out.println(leadPattern.matcher(reply).find());
    System.out.println(replyPattern.matcher(lead).find());
结果如下:

Lead: 12345-2365
Reply: 1234-2365
false
false

等一下。你的潜在客户id和回复id看起来完全一样。这没关系。。。我想区分“lead id”和“reply id”字符串: