1
我試圖捕捉下面的字,號:如何在正則表達式中捕獲多個組?
stxt:usa,city:14
我可以捕獲美國和14使用:
stxt:(.*?),city:(\d.*)$
然而,當文本;
stxt:usa
該正則表達式不起作用。我試圖申請或使用|但它沒有工作。
stxt:(.*?),|city:(\d.*)$
我試圖捕捉下面的字,號:如何在正則表達式中捕獲多個組?
stxt:usa,city:14
我可以捕獲美國和14使用:
stxt:(.*?),city:(\d.*)$
然而,當文本;
stxt:usa
該正則表達式不起作用。我試圖申請或使用|但它沒有工作。
stxt:(.*?),|city:(\d.*)$
您可以使用
(stxt|city):([^,]+)
見regex demo(注意只用於演示的目的添加的\n
,你不需要它在現實生活中)。
圖案的詳細資料:
(stxt|city)
- 無論是stxt
或city
子(你可以在(
前添加\b
只匹配整個單詞)(第1組):
- 冒號([^,]+)
- 除逗號以外的一個或多個字符(組2)。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));
}
看着你的字符串,你也可以在冒號後面找到單詞/數字。
:(\w+)
也許['^ stxt:(。*?)?(?:,城市:(\ d *))$'](https://regex101.com/R/hT2lW8/1)?或者你是否也想支持'city:14'這樣的具有相同模式的字符串?用逗號分割,然後用':'分割,會更容易。 –
這種格式的數據可能會通過一些拆分得到更好的處理,另請參閱https://google.github.io/guava/releases/19.0/api/docs/com/google/common/base/Splitter.MapSplitter.html – 2016-09-06 14:43:36
@ WiktorStribiżew是的,我想支持個人查詢城市和stxt。您提供的正則表達式適用於stxt,但我無法理解它! – kinkajou