通过正则表达式获得多个匹配

我想使用REGEX通过Matcher&Pattern从全局字符串中检索字符串。

String str = "ABC123DEF" Pattern pattern = Pattern.compile("(.*)"); Matcher matcher = pattern.matcher(str); 

我的问题是匹配器只给我一个匹配全局标签强大的匹配:

 ABC123DEF 

我的目标是获得2场比赛:

 ABC DEF 

谢谢你非常适合你的帮助。

你需要一个非贪婪的正则表达式:

 Pattern pattern = Pattern.compile(".*?"); 

? 指定非贪婪。 这意味着它将匹配它找到的第一个匹配而不是最外面的匹配…

如果你只想要ABCDEF那么你可以使用lookaheads和lookbehinds做这样的事情:

 String str = "ABC123DEF"; Pattern pattern = Pattern.compile("((?<=).*?(?=))"); Matcher matcher = pattern.matcher(str); while(matcher.find()) { System.out.println(matcher.group()); } 

如果您进行谷歌搜索,您应该能够找到有关前瞻和后视的信息……

我建议使用JSOUP来解析HTML代码而不是正则表达式

  Document doc = Jsoup.parse("ABC123DEF"); // select your tag Elements elements = doc.select("strong"); // get the iterator to traverse all elements Iterator it = elements.iterator(); // loop through all elements and fetch their text while (it.hasNext()) { System.out.println(it.next().text()); } 

输出:

 ABC DEF 

或者将输出作为单个字符串

  Document doc = Jsoup.parse("ABC123DEF"); Elements elements = doc.select("strong"); System.out.println(elements.text()); 

输出:

 ABC DEF 

下载Jsoup并将其添加为依赖项