为什么这个正则表达式在Java中没有像预期的那样工作?

0xC*_*ABE 9 java regex

琐碎的正则表达式问题(答案很可能是特定于Java的):

"#This is a comment in a file".matches("^#")
Run Code Online (Sandbox Code Playgroud)

这返回false.据我所知,^意味着它总是意味着什么并且#没有特殊意义,所以我^#在字符串的开头翻译为"A'#".哪个应该匹配.在Perl中它确实如此:

perl -e "print '#This is a comment'=~/^#/;"
Run Code Online (Sandbox Code Playgroud)

打印"1".所以我很确定答案是Java特有的.有人请赐教吗?

谢谢.

Joa*_*uer 17

Matcher.matches()检查整个输入字符串是否与正则表达式匹配.

由于您的正则表达式只匹配第一个字符,因此返回false.

你会想要使用Matcher.find().

当然,找到具体的规范可能有点棘手,但它在那里: