1

私は文字列を言います:

<encoded:2,Message request>

次に、上の行から抽出2します。Message request

private final String pString = "<encoded:[0-9]+,.*>";
    private final Pattern pattern = Pattern.compile(pString);

    private void parseAndDisplay(String line) {

        Matcher matcher = pattern.matcher(line);
        if (matcher.matches()) {
            while(matcher.find()) {
                String s = matcher.group();
                System.out.println("=====>"+s);

            }
        }
    }

これはそれを取得しません。何が問題なのですか

4

4 に答える 4

6

正規表現でグループを定義する必要があります。

"<encoded:([0-9]+),(.*?)>"

また

"<encoded:(\\d+),([^>]*)"
于 2013-03-25T09:44:18.937 に答える
4

試す

    String s = "<encoded:2,Message request>";
    String s1 = s.replaceAll("<encoded:(\\d+?),.*", "$1");
    String s2 = s.replaceAll("<encoded:\\d+?,(.*)>", "$1");
于 2013-03-25T09:53:57.773 に答える
0

試す

"<encoded:([0-9]+),([^>]*)"

また、他のコメントで示唆されているようにgroup(1)group(2)

于 2013-03-25T09:48:38.323 に答える
0

これを試してみてください:

         Matcher matcher = Pattern.compile("<encoded:(\\d+)\\,([\\w\\s]+)",Pattern.CASE_INSENSITIVE).matcher("<encoded:2,Message request>");

    while (matcher.find()) {
        System.out.println(matcher.group(1));
        System.out.println(matcher.group(2));
    }
于 2013-03-25T09:58:43.927 に答える