如何避免Java正则表达式匹配中的隐式"^"和"$"?

Omn*_*bat 4 java regex

我一直在努力在Java 1.4.2中做一些相对简单的正则表达式匹配.我对Perl的做事方式更加满意.这是发生了什么:

我试图匹配/ ^ <foo> /来自"<foo> <bar>"

我尝试:

Pattern myPattern= Pattern.compile("^<foo>");
Matcher myMatcher= myPattern.matcher("<foo><bar>");
System.out.println(myMatcher.matches());
Run Code Online (Sandbox Code Playgroud)

我得到"假"

我习惯说:

print "<foo><bar>" =~ /^<foo>/;
Run Code Online (Sandbox Code Playgroud)

这确实是真的.

经过大量的搜索和实验,我发现了这个说:

"String方法通过在模式之前放置一个不可见的^并在它之后放置$来进一步优化其搜索条件."

当我尝试:

Pattern myPattern= Pattern.compile("^<foo>.*");
Matcher myMatcher= myPattern.matcher("<foo><bar>");
System.out.println(myMatcher.matches());
Run Code Online (Sandbox Code Playgroud)

然后它返回预期的true.我不想要这种模式.终止.*不应该是必要的.

然后我发现了Matcher.useAnchoringBounds(boolean)方法.我认为明确告诉它不使用锚定边界会起作用.它没.我试过发一个

myMatcher.reset();
Run Code Online (Sandbox Code Playgroud)

以防我在关闭属性后需要冲洗它.没运气.随后调用.matches()仍然返回false.

我忽略了什么?

编辑:嗯,这很简单,谢谢.

jdi*_*tal 11

使用Matcher 查找方法(而不是匹配方法)