我正在尝试将TCL键控列表转换为Java HashMap
,并且需要使用正则表达式来分解文本片段。我正在使用的文本示例是:
{ID {{NAME X } {HUB 0 } {NUM 14226188 }}} {SRCID {{NAME XY } {HUB 0 } {NUM 14226136 }}} {TYPE DATA }
这里有三个不同的组ID,SRCID和TYPE。我已经尝试使用正则表达式{.*?}
,但前两个组被分解了。如果我只使用{.*}
,那么整个字符串将作为一个单元匹配,而不是三个。关于我接下来应该尝试什么的任何建议?
答案 0 :(得分: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 {{姓名XY} {HUB 0} {NUM 14226136}}}
{TYPE DATA}
希望这有帮助。