java - 为什么这个正则表达式在 Java 中不能像预期的那样工作?

标签 java regex

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

"#This is a comment in a file".matches("^#")

这会返回错误。据我所知,^ 表示它始终表示的意思,# 没有特殊含义,所以我将 ^# 翻译为“字符串开头的‘#’”。哪个应该匹配。在 Perl 中也是如此:

perl -e "print '#This is a comment'=~/^#/;"

打印“1”。所以我很确定答案是特定于 Java 的。有没有人能赐教一下?

谢谢。

最佳答案

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

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

您需要使用 Matcher.find()相反。

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

关于java - 为什么这个正则表达式在 Java 中不能像预期的那样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792024/

相关文章:

java - java中有没有更好的方法将对象添加到ArrayList中?每次我尝试添加或设置新内容时,它都会将整个数组更改为该对象

java - 弹出堆栈中的元素直到某个元素

java - 访问 Android 联系人时出现问题

regex - 用 SED 或 AWK(或其他有效的方法)替换日期 - Linux 正则表达式

php - MySQL 中带有通配符或正则表达式的数值

java - 无法理解这背后的逻辑

java - joda日期时间反序列化

JavaScript 正则表达式货币仅小数

regex - 如何为正则表达式集合找到 "minimal spanning set"?

javascript - 使用 Javascript 转义空白字符