在javaPattern.matches方法中使用正则表达式的起始行



我对正则表达式中的^符号有点困惑。

根据我在网上读到的内容,这意味着:"查找必须在行首匹配的正则表达式。">

我读到这里的例子:https://regexone.com/lesson/line_beginning_end

在上面的例子中,我们可以使用模式^success只匹配以单词"success"开头的一行,而不匹配Error: unsuccessful operation

我的困惑来自于^success只会与字符串"success"匹配,对吗?那么^在下面的例子中有什么意义呢?基于对^符号的描述,我希望第二个也是真的。

System.out.println(Pattern.matches("^success","success"));  // true
System.out.println(Pattern.matches("^success","success is good"));  // false

有人能给我举一些正则表达式中使用的^符号的明确例子吗?

你是对的,^success只有匹配字符串"success">
^success仍然是一种模式,可以在"成功就是好的"这样的字符串中找到。

你可以检查一下。。。

System.out.println(Pattern.matches("^success.*","success is good"));

这应该是真的,因为它匹配以"success"开头并包含更多字符的字符串
或者您可以尝试在字符串中查找模式^success。这是一个术语问题。模式仅当与整个字符串完全匹配时,才与字符串匹配。找到一个模式作为字符串的一部分(因此它的子字符串模式匹配)是另一回事!

字符串的完全匹配也意味着模式中的^$(用于字符串的开头和结尾),因为字符串必须从头到尾匹配(感谢@Pshemo指出这一点!)。

另请参阅:使用Java使用正则表达式查找较大字符串的子字符串

最新更新