正则表达式笔记(三)

2017-05-11  本文已影响0人  oowl

边界

断言也被称做零宽度断言(zero-widthassertion)。零宽度断言不匹配字符,而是匹配字符串中的位置。其中的一些,比如^和$,也叫做锚位符。断言标记边界,但是并不耗用字符。

边界的种类:
行或者字符串的起始与结束位置;
单词边界(两种);
主题词的起始与结束位置;
引用字符串字面值的边界。

1、行的起始与结束
^会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。$匹配行或字符串的结尾位置。
例子1、^How.*Country.$
它会匹配以单词How开头的整行。请注意结尾的点号之前有一个反斜杠,它对点号进行转义,这样点号就被解释为字面值。如果不对点号转义,它就会匹配任意字符。如果想匹配作为字面值的点号,则必须将点号转义或者将其放入字符组中。

2、单词边界与非单词边界
\b 匹配单词边界
\B 匹配一个非单词边界,
\Be\B 它匹配了小写字母e,而匹配的字母e的两边都是其他字母或者是非单词字符。零宽度断言不会匹配两边的字符,但它会识别文字e的两边是否是非单词边界。
3、使用元字符的字面值
.^$*+?|(){}[]-这15个元字符在正则表达式中有特殊含义,用来编写匹配模式。(连字符在字符组的方括号中用来表示范围。但在其他情况下,则无特殊含义。)。
\Q$\E它将匹配$,因为\Q和\E之间的任意字符都会被解释为普通字符。也可以在元字符之前加一个\使其匹配字面值。

量词

量词的特性:

基本量词:

使用花括号可以限制某个模式在某个范围内匹配的次数,未经修饰的量词就是贪心量词。
例如:7{1}会匹配第一次出现的7。
要匹配一个或多个数字7,只要加一个逗号即可:7{1,}
7+和7{1,}本质上是一样的,
7*和7{0,}也是相同的。
另外,7?与7{0,1}也是一样的。
还可以匹配m到n次,
比如:7{3,5}会匹配三个、四个以及五个7。
可以看出,花括号(或者说范围语法)是最灵活和精确的量词。

懒惰量词

量词后面跟上? 就变成懒惰量词 例如:5?? ,前边这个?是量词表示0次或1次,后面这个?会把前面那个量词变成懒惰量词,按最少的次数去匹配,也就是0次。例如:5{2,5}? ,{}之中的表示匹配2-5次,后面的?将前面的量词变成懒惰量词只会匹配两次。

占有量词

上一篇 下一篇

猜你喜欢

热点阅读