我正在尝试从这里提取'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
答案 0 :(得分:5)
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));
}