我对正则表达式中的^
符号有点困惑。
根据我在网上读到的内容,这意味着:"查找必须在行首匹配的正则表达式。">
我读到这里的例子: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使用正则表达式查找较大字符串的子字符串