正则表达式中^和$的含义是什么?

时间:2011-08-02 07:41:40

标签: java regex

"\\w+@\\w+[.]\\w+""^\\w+@\\w+[.]\\w+$"之间有什么区别?我试图谷歌,但没有运气。

2 个答案:

答案 0 :(得分:10)

^表示“匹配字符串的开头”(更确切地说,字符串中第一个字符之前的位置,因此它与实际字符不匹配)。

$表示“匹配字符串的结尾”(字符串中最后一个字符后的位置)。

两者都被称为anchors,并确保匹配整个字符串而不仅仅是子字符串。

因此,在您的示例中,第一个正则表达式将在email@address.com.uk上报告匹配,但匹配的文本将为email@address.com,可能与您的预期不同。第二个正则表达式将会失败。

要小心,因为一些正则表达式实现隐式地将正则表达式锚定在字符串的开头/结尾(例如Java .matches(),如果你正在使用它)。

如果设置了多行选项(例如,使用(?m)标记,或通过执行Pattern.compile("^\\w+@\\w+[.]\\w+$", Pattern.MULTILINE)),那么^$也会在开始时匹配行的结尾

答案 1 :(得分:1)

尝试使用Javadoc:

http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

^$匹配一行的开头/结尾(不消耗它们)