正则表达式笔记(三)

边界

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

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

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

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

量词

量词的特性:

  • 量词自身是贪心的。贪心的量词会首先匹配整个字符串。尝试匹配时,它会选定尽可能多的内容,也就是整个输入。量词首次尝试匹配整个字符串,如果失败则回退一个字符后再次尝试。这个过程叫做回溯(backtracking)。它会每次回退一个字符,直到找到匹配的内容或者没有字符可尝试为止。此外,它还记录所有的行为,因此相较另两种方式它对资源的消耗最大。它先“吃”尽所有的字符,然后每次“吐”出一点,慢慢咀嚼消化
  • 懒惰(有时也说勉强)的量词则使用另一种策略。它从目标的起始位置开始尝试寻找匹配,每次检查字符串的一个字符,寻找它要匹配的内容。最后,它会尝试匹配整个字符串。要使一个量词成为懒惰的,必须在普通量词后添加一个问号(? )。它每次只“吃”一点。
  • 占有量词会覆盖整个目标然后尝试寻找匹配内容,但它只尝试一次,不会回溯。占有量词就是在普通量词之后添加一个加号(+)。它不“咀嚼”而是直接“吞咽”,然后才想知道“吃”的是什么。下面几节将逐一展示这几种量词。占有量词会覆盖整个目标然后尝试寻找匹配内容,但它只尝试一次,不会回溯。占有量词就是在普通量词之后添加一个加号(+)。它不“咀嚼”而是直接“吞咽”,然后才想知道“吃”的是什么。下面几节将逐一展示这几种量词。
基本量词:
  • *零次或多次
  • +一次或多次
  • ?零次或一次
    这些量词默认是贪心的,这意味它们在第一次尝试时会尽可能多地匹配字符。

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

  • {n}精确匹配n次
  • {n,}匹配n次或更多次
  • {m,n}匹配m至n次
  • {0,1}与?相同(零次或一次)
  • {1,0}与+相同(一次或更多)
    {0,}与*相同(零次或更多)

懒惰量词

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

  • ??懒惰匹配零次或一次(可选)
  • +?懒惰匹配一次或多次
  • *?懒惰匹配零次或多次
  • {n}?懒惰匹配n次
  • {n,}?懒惰匹配n次或多次
  • {m,n}?懒惰匹配m至n次

占有量词

  • ?+占有式匹配零次或一次(可选)
  • ++占有式匹配一次或多次
  • *+占有式匹配零次或多次
  • {n}+占有式匹配n次
  • {n,}+占有式匹配
  • n次或更多次{m,n}
  • +占有式匹配m至n次
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容