我感到有点混淆关于^
在正则表达式的符号。
根据我在网上阅读的内容,它表示:“查找必须与行首匹配的正则表达式。”
我读到的示例这里介绍:https://regexone.com/lesson/line_beginning_end
“在上面的示例中,我们可以使用模式^success
仅匹配以单词” success“开头的行,而不匹配行Error: unsuccessful operation
我的困惑来自于一个事实,即^success
将只匹配字符串“成功”吗?那么在下面的示例中^
的意义是什么?我会期望第二到也是真实的,基于所述^
的符号的说明。
System.out.println(Pattern.matches("^success","success")); // true
System.out.println(Pattern.matches("^success","success is good")); // false
有人可以用正则表达式中使用的^
符号给我任何清晰的例子吗?
答案 0 :(得分:0)
您是对的,^success
仅匹配字符串“ success”。
但是^success
仍然是可以在诸如“成功是好的”之类的字符串中找到的模式。
您可以检查...
System.out.println(Pattern.matches("^success.*","success is good"));
...应为真,因为它匹配以“成功”开头且包含更多字符的字符串。
或者,您可以尝试找到字符串中的模式^success
。这是术语问题。仅在字符串完全匹配完全匹配 时,模式匹配字符串。要找到模式作为字符串的一部分(因此它的子字符串匹配该模式)是另一回事!
字符串的完全匹配还意味着模式中的^
和$
(用于字符串的开头和结尾),因为字符串必须从开头开始匹配结束(感谢@Pshemo指出了这一点!)。
另请参阅:Using Java to find substring of a bigger string using Regular Expression