我正在尝试从这里提取“t”和“f”标志。 所以我很惊讶地在输出中看到额外的字符。显然匹配器回溯了 - 我不明白为什么。正确的正则表达式应该是什么?
System.out.println("searching...");
// "Sun:\\s Mon:\\s Tue:\\s Wed:\\s Thu:\\s Fri:\\s Sat:\\s "
Pattern p = Pattern.compile("[t|f]");
Matcher m = p.matcher("Sun:t Mon:f Tue:t Wed:t Thu:f Fri:t Sat:f ");
while (m.find()) {
System.out.println(m.group());
}
输出:
searching...
t
f
t
t
f
t
t
f
最佳答案
Sat
中有一个 t
。尝试使用 ":([tf])"
代替。
Pattern p = Pattern.compile(":([tf])");
Matcher m = p.matcher("Sun:t Mon:f Tue:t Wed:t Thu:f Fri:t Sat:f ");
while (m.find()) {
System.out.println(m.group(1));
}
关于Java 正则表达式 - 为什么匹配器发现额外的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21735131/