我正在尝试捕获以下单词,数字:

stxt:usa,city:14


我可以使用以下命令捕获美国和14国:

stxt:(.*?),city:(\d.*)$


但是,当文本是

stxt:usa


正则表达式不起作用。我尝试使用|但它没有用。

stxt:(.*?),|city:(\d.*)$

最佳答案

您可以使用

(stxt|city):([^,]+)


请参见regex demo(请注意,仅出于演示目的添加了\n,您在现实生活中不需要它)。

图案细节:


(stxt|city)-stxtcity子字符串(可以在\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));
}

09-05 03:59