正则表达式入门(三)边界
零宽度断言不匹配字符,而是匹配字符串中的位置。比如^和$,也叫做锚位符。
行的起始与结束
要匹配行或字符串的起始要用脱字符
^
要匹配行或字符串的结尾要用美元符
$
^How.*Country\.$
这个匹配以How开头的整行。最后的\.是转义字符,匹配点号.。如果想要匹配作为字面值的点号,必须将点号转义或者将其放入字符组中。
如果不勾选multiline但是勾选dotall的情况下,输入
^THE.*\?$
它匹配了整个文本。
dotall选项表示点号除了匹配其他字符外,还会匹配换行符。如果取消doall,则它什么都不匹配。
^THE.*
在取消dotall的情况下只匹配了第一行。
单词边界与非单词边界
\bTHE\b
\b是个零宽度的断言,因为它匹配的东西其实是没有宽度不存在的东西,它匹配了单词THE
\Be\B
它匹配了字母e,e的两边都是非单词字符
指定单词的边界的另一种方法:
\<
指定单词开头
\>
指定单词结尾
这是旧语法,在最新的正则程序中无法使用。但有些情况很有用。因为它不想\b匹配任意单词边界,允许分别匹配。
其他锚位符
\A匹配字符串开头,\Z匹配字符串结尾,但这个写法不是在所有正则程序中可用。
使用元字符的字面值
可以使用\Q和\E之间的字符集匹配字符串字面值。
为了展示,在RegExr下方文本框中输入以下元字符:
.^$*+?|(){}[]\-
这15个元字符有特殊含义,用来编写匹配模式。
如果在RegExr上方文本框中写入这些字符,不会有效果,因为RegExr会以为这是正则表达式而不是字符串字面值。
\Q$\E
它将匹配$,因为\Q和\E之间的任意字符都会被解释为普通字符。而可以在元字符之前加一个\使其匹配字面值。
小结:
1.开始和结束分别是^,$
2.单词和非单词把边界是\b,\B
3.\Q和\E之间的任意字符都会被解释为普通字面字符