0

TCL キー付きリストを Java に変換しようとしていますHashMapが、正規表現を使用してテキストの一部を分割する必要があります。私が使用しているテキストのサンプルは次のとおりです。

{ID {{NAME X} {HUB 0} {NUM 14226188 }}} {SRCID {{NAME XY} {HUB 0} {NUM 14226136 }}} {TYPE DATA}

ここには、ID、SRCID、および TYPE という 3 つの異なるグループがあります。正規表現を使用してみまし{.*?}たが、最初の 2 つのグループが分割されます。Just then を使用すると{.*}、文字列全体が 3 つではなく 1 つの単位として一致します。次に何を試すべきかについての提案はありますか?

4

1 に答える 1

0

要件を満たす正規表現を使用したサンプル コードを次に示します。

public class RegexTester {
public static void main(String[] args) throws Exception {
    String data = "{ID {{NAME X } {HUB 0   } {NUM 14226188  }}} {SRCID {{NAME XY } {HUB 0   } {NUM 14226136  }}} {TYPE DATA }";

    Pattern pattern = Pattern.compile("(\\{\\bID.+\\})\\s*(\\{SRCID.+\\})\\s*(\\{TYPE DATA.+\\})");
    Matcher matcher = pattern.matcher(data);

    while (matcher.find()) {

        System.out.println(matcher.group(1)); // Group - ID
        System.out.println(matcher.group(2)); // Group - SRCID
        System.out.println(matcher.group(3)); // Group - TYPE DATA
    }
}

出力:

{ID {{NAME X} {HUB 0} {NUM 14226188 }}}
{SRCID {{NAME XY} {HUB 0} {NUM 14226136 }}}
{TYPE DATA}

お役に立てれば。

于 2013-03-16T10:59:28.360 に答える