0

我正在尝试将 TCL 键控列表转换为 Java HashMap,并且需要使用正则表达式来分解文本片段。我正在使用的文本示例是:

{ID {{NAME X } {HUB 0 } {NUM 14226188 }}} {SRCID {{NAME XY } {HUB 0 } {NUM 14226136 }}} {类型数据}

这里有三个不同的组 ID、SRCID 和 TYPE。我曾尝试使用正则表达式{.*?},但前两组被分解了。如果我只使用{.*}整个字符串作为一个单元匹配,而不是三个。关于我接下来应该尝试什么的任何建议?

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 }}}
{类型数据}

希望这可以帮助。

于 2013-03-16T10:59:28.360 回答