0

私の文字列はSMSで、次の2つの形式のいずれかで送信されます。

リードのSMS: 1つのリードタイトル
を受け取りました:私のリードリードID:12345-2365アラート設定ID:890



返信用のSMS:
1つの返信
タイトルを受け取りました:my reply
reply id:12345-2365
ad id:890

実際、私はSMSを解析して、データベースの値をそれぞれのフィールドに格納しています。ロジックの解析に正規表現を使用したいと思います。上記のように、SMSはリードまたは返信によって区別され、フィールドはそれらによって異なります(太字)。私の問題は、正規表現を使用してこれら2つのSMSタイプを区別する方法です。たとえば、SMS文字列のリードIDと返信IDを区別したい場合、正規表現文字列は何になりますか?

注: String.split()と呼ばれる別の方法があることは知っていますが、これに基づいて記述されたコードは長すぎて複雑です。したがって、正規表現を使用します。

よろしくお願い
しますSohaibRahman

4

1 に答える 1

1

このコードを使用して、メッセージの 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
于 2012-08-03T05:36:56.513 に答える