有一个字符串:
station:C1,C2,C3,C4,C5,team:C5TQ5,C3TQ1,C5TQ1,test:value,...
当我进入第三组时,我想直到下一个第一组。
我的正则表达式:
/(\w+?)(:)(.*)/g
我希望:
工作站(第1组)
:(组2)
C1,C2,C3,C4,C5(第3组)
团队(第1组)
:(组2)
C5TQ5,C3TQ1,C5TQ1(第3组)
测试(第1组)
:(组2)
值(第3组)
等等。
答案 0 :(得分:1)
答案 1 :(得分:1)
如果我对您的理解正确,那么您正在寻找像(\w+)(:)(\w+(,(?![^,]+:)\w+)*)
这样的正则表达式,其中
(\w+)
将“密钥”放在组1中(:)
将冒号置于第2组((\w+)(,(?![^,]+:)\w+)*)
在第3组中放置一个字母数字单词\w+
(可选),后跟零个或多个以逗号分隔的单词。
(?![^,]+:)
,我们可以确保接受的单词(非逗号字符序列)后面不能加冒号。演示:
String data = "station:C1,C2,C3,C4,C5,team:C5TQ5,C3TQ1,C5TQ1,test:value";
Pattern p = Pattern.compile("(\\w+)(:)(\\w+(,(?![^,]+:)\\w+)*)");
Matcher m = p.matcher(data);
while (m.find()){
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
System.out.println("===");
}
输出:
station
:
C1,C2,C3,C4,C5
===
team
:
C5TQ5,C3TQ1,C5TQ1
===
test
:
value
===