锚定的正则表达式和未锚定的正则表达式之间有什么区别?

时间:2017-03-02 13:57:04

标签: regex

锚定的正则表达式和未锚定的正则表达式之间有什么区别?

用法found here

  

...这些应该被指定为对的列表,其中第一个元素是 un-anchored regex (在java.util.regex.Pattern语法中)平台名称与之匹配...

1 个答案:

答案 0 :(得分:9)

Unanchored regex 表示没有锚点的正则表达式模式,^表示字符串的开头,$表示字符串的结尾,因此允许部分匹配。例如。在Java中,Matcher#find()方法可以在输入字符串中搜索部分匹配,"a.c"将在"1.0 abc."中找到匹配项。锚定的"^a.c$"模式将与"abc"字符串匹配,但在"1.0 abc."中找不到匹配项。

此外,未锚定的正则表达式可能意味着处理正则表达式模式的代码不会检查匹配是否等于完整输入字符串。例如。在Java中,Matcher#matches()方法要求模式必须与完整输入字符串匹配,s.matches("a.c")将匹配"abc"字符串,但在"1.0 abc."中找不到匹配项。< / p>

锚定正则表达式意味着如果整个字符串匹配,模式将只匹配字符串。

有关正则表达式中锚点的更多信息,请参阅Start of String and End of String Anchors