Java Pattern.matches方法中的行正则表达式用法的开头?

时间:2019-01-30 09:48:37

标签: java regex

我感到有点混淆关于^在正则表达式的符号。

根据我在网上阅读的内容,它表示:“查找必须与行首匹配的正则表达式。”

我读到的示例这里介绍: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

有人可以用正则表达式中使用的^符号给我任何清晰的例子吗?

1 个答案:

答案 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