簡體   English   中英

如何在正則表達式中使用組在java中?

[英]How to use groups in Regular Expression In java?

我有這個代碼,我想找到1234和4321,但目前我只能得到4321.我怎么能解決這個問題?

String a = "frankabc123 1234 frankabc frankabc123 4321 frankabc";
String rgx = "frank.* ([0-9]*) frank.*";
Pattern patternObject = Pattern.compile(rgx);
Matcher matcherObject = patternObject.matcher(a);
while (matcherObject.find()) {
    System.out.println(matcherObject.group(1));
}

你的正則表達式太貪心了。 讓它不貪心。

String rgx = "frank.*? ([0-9]+) frank";

你的不正確。 第一部分: frank.*匹配所有內容然后回溯直到比賽的其余部分成功。 試試這個:

String rgx = "frank.*? ([0-9]*) frank";

? 在量詞將使其不情願之后,匹配盡可能少的字符以匹配模式的其余部分。 尾隨.*也導致問題(正如nhahtdh在評論中指出的那樣)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM