我一直在努力在Java 1.4.2中做一些相对简单的正则表达式匹配.我对Perl的做事方式更加满意.这是发生了什么:
我试图匹配/ ^
我尝试:
Pattern myPattern= Pattern.compile("^"); Matcher myMatcher= myPattern.matcher(" "); System.out.println(myMatcher.matches());
我得到"假"
我习惯说:
print "" =~ /^ /;
这确实是真的.
经过大量的搜索和实验,我发现了这个说:
"String方法通过在模式之前放置一个不可见的^并在它之后放置$来进一步优化其搜索条件."
当我尝试:
Pattern myPattern= Pattern.compile("^.*"); Matcher myMatcher= myPattern.matcher(" "); System.out.println(myMatcher.matches());
然后它返回预期的true.我不想要这种模式.终止.*不应该是必要的.
然后我发现了Matcher.useAnchoringBounds(boolean)方法.我认为明确告诉它不使用锚定边界会起作用.它没.我试过发一个
myMatcher.reset();
以防我在关闭属性后需要冲洗它.没运气.随后调用.matches()仍然返回false.
我忽略了什么?
编辑:嗯,这很简单,谢谢.
使用Matcher 查找方法(而不是匹配方法)