通过正则表达式获得多个匹配
我想使用REGEX通过Matcher&Pattern从全局字符串中检索字符串。
String str = "ABC123DEF" Pattern pattern = Pattern.compile("(.*)"); Matcher matcher = pattern.matcher(str);
我的问题是匹配器只给我一个匹配全局标签强大的匹配:
ABC123DEF
我的目标是获得2场比赛:
ABC DEF
谢谢你非常适合你的帮助。
你需要一个非贪婪的正则表达式:
Pattern pattern = Pattern.compile(".*?");
用?
指定非贪婪。 这意味着它将匹配它找到的第一个匹配而不是最外面的匹配…
如果你只想要ABC
和DEF
那么你可以使用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并将其添加为依赖项