Java Regex无法找到匹配项

Aja*_*jay 1 java regex string

这应该返回true,而是返回false.

"ADC".matches("A.*?C")
Run Code Online (Sandbox Code Playgroud)

我在javascript正则表达式测试器上测试过:http://regexpal.com/

它有效,为什么它不能在Java中工作?

编辑:与此相同:

System.out.println("DEAGHHF".matches("(A.*?C|C.*?A|D.*?C|C.*?D|A.*?F|F.*?A)"));
Run Code Online (Sandbox Code Playgroud)

返回false,regexpal返回true(与其他javascript正则表达式引擎一样).

aio*_*obe 6

不,它返回true.

System.out.println("ADC".matches("A.*?C"));
Run Code Online (Sandbox Code Playgroud)

打印true.

regexpal.com实现似乎是错误的(这是可以理解的,因为它是版本0.1.4).尝试ABC重复输入.只有每一秒ABC都被拒绝.(至少在我的firefox版本中查看它时.)

关于你的编辑:

A.?C|C.?A|D.?C|C.?D|A.?F|F.?A
Run Code Online (Sandbox Code Playgroud)

被解释为

A.*?C   or
C.*?A   or
D.*?C   or
C.*?D   or
A.*?F   or
F.*?A
Run Code Online (Sandbox Code Playgroud)

换一种说法

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,
Run Code Online (Sandbox Code Playgroud)

由于"DEAGHHF"开始D和结束F,它将不匹配.

也许你正在寻找这种Matcher.find方法