-
Notifications
You must be signed in to change notification settings - Fork 164
Closed
Description
I am trying to grab two numbers followed by an optional space followed by another optional number or one optional letter. No other letter afterwards. This is the test code:
@Test
public void test() {
com.google.re2j.Pattern p1 = com.google.re2j.Pattern.compile("(?P<elem>\\d{2} ?(\\d|[a-z])?)(?P<end>$|[^a-zA-Z])");
com.google.re2j.Pattern p2 = com.google.re2j.Pattern.compile("(?P<elem>\\d{2}(?U) ?(\\d|[a-z])?)(?P<end>$|[^a-zA-Z])");
String input = "22 bored";
com.google.re2j.Matcher m1 = p1.matcher(input);
com.google.re2j.Matcher m2 = p2.matcher(input);
while (m1.find()) {
System.out.println(m1.group("elem")); // 22 b
}
while (m2.find()) {
System.out.println(m2.group("elem")); // 22
}
}
Both should print 22, instead first one (without the non-greedy flag) prints 22 b
Works in go: https://play.golang.org/p/Q0gCyLD013V
Regex: https://regex101.com/r/lF9aG7/6
Metadata
Metadata
Assignees
Labels
No labels