这应该返回true,而是返回false。
"ADC".matches("A.*?C")
我在javascript regex测试器上测试过它:http://regexpal.com/
它有效,为什么它不能用Java?
编辑: 与此相同:
System.out.println("DEAGHHF".matches("(A.*?C|C.*?A|D.*?C|C.*?D|A.*?F|F.*?A)"));
返回false,regexpal返回true(与其他javascript正则表达式引擎一样)。
答案 0 :(得分:6)
System.out.println("ADC".matches("A.*?C"));
打印true
。
regexpal.com实现似乎是错误的(这是可以理解的,因为它是版本0.1.4)。请尝试重复输入ABC
。只有每一秒ABC
被拒绝。 (至少在我的firefox版本中查看它时。)
关于您的修改:
A.?C|C.?A|D.?C|C.?D|A.?F|F.?A
被解释为
A.*?C or
C.*?A or
D.*?C or
C.*?D or
A.*?F or
F.*?A
换句话说
Something that starts with A and ends with C, or
Something that starts with C and ends with A, or
Something that starts with D and ends with C, or
....
Something that starts with F and ends with A,
由于"DEAGHHF
“以D
开头,以F
结尾,因此不匹配。
也许您正在寻找Matcher.find
method