Java Regex无法找到匹配项

时间:2011-05-07 19:48:19

标签: java regex string

这应该返回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正则表达式引擎一样)。

1 个答案:

答案 0 :(得分:6)

不,it returns true

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