-1

Java で正規表現を使用して、ペア<b><number></b>に含まれるフォームのすべての文字列に一致させようとしています。<a><\a>

たとえば、and と<a> kljsdlk <b>123</b> df <b>345</b> sdfklj</a>2 回一致する必要がありますが、結果は返されません (ラッピングがないため)。<b>123</b><b>345</b><v> kljsdlk <b>123</b> df <b>345</b> sdfklj</v><a></a>

次のコードは、私の現在の最良の結果です。

        Pattern MY_PATTERN = Pattern.compile("(<a>.*(<b>[0-9]*<\\\\b>)?.*<\\\\a>)");

    Matcher m = MY_PATTERN.matcher("<a> skdjlkasjflkj <b>200<\\b> sldfhjhfj d lkj b <b>300<\\b> fhih 9 09 <\\a>");
    while (m.find()) {
        for (int i=0; i< m.groupCount() ;i++){
            String s = m.group(i);
            System.out.println(s);
        }
    }

このコードの結果は次のとおりです。

<a> skdjlkasjflkj <b>200<\b> sldfhjhfj d lkj b <b>300<\b> fhih 9 09 <\a>
<a> skdjlkasjflkj <b>200<\b> sldfhjhfj d lkj b <b>300<\b> fhih 9 09 <\a>

私はそれが次のようになることを望みます:

<b>200<\b>
<b>300<\b>
4

3 に答える 3

0

問題は、パターン内の文字列全体を一致させたことです。内部タグのパターンのみを作成する必要があります。それは正しい一致する文字列を提供します

于 2013-04-03T11:49:34.963 に答える
0

Java が任意の長さの後読みをサポートしている場合、これを実行できる可能性があります。それがなければ、これは正規表現だけでは不可能です。また、HTML/XML であるため、専用のライブラリを使用するとより直感的に使用できます。

于 2013-04-03T12:04:32.443 に答える