正则表达式浅析(六)

202 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第14天

4.2 负向先行断言

当我们需要从输入字符串中获取不匹配表达式的内容时,使用负向先行断言。负向先行断言的定义跟我们定义的正向先行断言一样, 唯一的区别是不是等号 =,我们使用否定符号 !,例如 (?!...)。 我们来看看下面的正则表达式 (T|t)he(?!\sfat),表示: 从输入字符串中获取全部 The 或者 the 且不匹配 fat 前面加上一个空格字符。

"(T|t)he(?!\sfat)" => The fat cat sat on the mat.

4.3 正向后行断言

正向后行断言是用于获取在特定模式之前的所有匹配内容。正向后行断言表示为 (?<=...)。例如正则表达式 (?<=(T|t)he\s)(fat|mat),表示: 从输入字符串中获取在单词 Thethe 之后的所有 fatmat 单词。

"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.

4.4 负向后行断言

负向后行断言是用于获取不在特定模式之前的所有匹配的内容。负向后行断言表示为 (?。例如正则表达式(?,表示: 在输入字符中获取所有不在 Thethe 之后的所有单词 cat

"(?<!(T|t)he\s)(cat)" => The cat sat on cat.

5. 标记

标记也称为修饰符,因为它会修改正则表达式的输出。这些标志可以以任意顺序或组合使用,并且是正则表达式的一部分。

标记描述
i不区分大小写: 将匹配设置为不区分大小写。
g全局搜索: 搜索整个输入字符串中的所有匹配。
m多行匹配: 会匹配输入字符串每一行。

5.1 不区分大小写

i 修饰符用于执行不区分大小写匹配。例如正则表达式 /The/gi,表示: 大写字母 T,后跟小写字母 h,后跟字母 e。 但是在正则匹配结束时 i 标记会告诉正则表达式引擎忽略这种情况。正如你所看到的,我们还使用了 g 标记,因为我们要在整个输入字符串中搜索匹配。

"The" => The fat cat sat on the mat.
"/The/gi" => The fat cat sat on the mat.