我正在尝试捕获以下单词,数字:
stxt:usa,city:14
我可以使用以下命令捕获美国和14国:
stxt:(.*?),city:(\d.*)$
但是,当文本是
stxt:usa
正则表达式不起作用。我尝试使用|但它没有用。
stxt:(.*?),|city:(\d.*)$
最佳答案
您可以使用
(stxt|city):([^,]+)
请参见regex demo(请注意,仅出于演示目的添加了
\n
,您在现实生活中不需要它)。图案细节:
(stxt|city)
-stxt
或city
子字符串(可以在\b
之前添加(
以仅匹配整个单词)(组1):
-冒号([^,]+)
-除逗号以外的1个或多个字符(第2组)。Java demo:
String s = "stxt:usa,city:14";
Pattern pattern = Pattern.compile("(stxt|city):([^,]+)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}