我有一个像
String string = "number0 foobar number1 foofoo number2 bar bar bar bar number3 foobar";
我需要一个正则表达式给我以下输出:
number0 foobar
number1 foofoo
number2 bar bar bar bar
number3 foobar
我努力了
Pattern pattern = Pattern.compile("number\\d+(.*)(number\\d+)?");
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println(matcher.group());
}
但这给
number0 foobar number1 foofoo number2 bar bar bar bar number3 foobar
因此,您想要number
(+一个整数)后跟任何内容,直到下一个number
(或字符串结尾),对吗?
然后,您需要告诉正则表达式引擎:
Pattern pattern = Pattern.compile("number\\d+(?:(?!number).)*");
在您的正则表达式中,.*
尽可能匹配-直到字符串结尾的所有内容。另外,您(number\\d+)?
将比赛的第二部分本身做了。
我的解决方案说明:
number # Match "number"
\d+ # Match one of more digits
(?: # Match...
(?! # (as long as we're not right at the start of the text
number # "number"
) # )
. # any character
)* # Repeat as needed.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句