简介:
- ?=... 前置约束(存在):--->就是后面要跟着的字符
- ?!... 前置约束-排除:--->就是后面不能存在的字符
- ?<= ... 后置约束-存在:--->就是前面必须跟着的字符
- ?<!... 后置约束-排除:--->就是前面必须不能存在的字符
4. 前后关联约束(前后预查)
前置约束和后置约束都属于非捕获簇(用于匹配不在匹配列表中的格式). 前置约束用于判断所匹配的格式是否在另一个确定的格式之后.
例如, 我们想要获得所有跟在 $
符号后的数字, 我们可以使用正向向后约束 (?<=\$)[0-9\.]*
. 这个表达式匹配 $
开头, 之后跟着 0,1,2,3,4,5,6,7,8,9,.
这些字符可以出现大于等于 0 次.
前后关联约束如下:
符号 | 描述 |
---|---|
?= | 前置约束-存在 |
?! | 前置约束-排除 |
?<= | 后置约束-存在 |
?<! | 后置约束-排除 |
?=...
前置约束(存在):--->就是后面要跟着的字符
4.1 ?=...
前置约束(存在), 表示第一部分表达式必须跟在 ?=...
定义的表达式之后.
返回结果只满足第一部分表达式. 定义一个前置约束(存在)要使用 ()
. 在括号内部使用一个问号和等号: (?=...)
.
前置约束的内容写在括号中的等号后面. 例如, 表达式 (T|t)he(?=\sfat)
匹配 The
和 the
, 在括号中我们又定义了前置约束(存在) (?=\sfat)
,即 The
和 the
后面紧跟着 (空格)fat
.
1 |
"(T|t)he(?=\sfat)" => <a href="https://github.com/zeeshanu/learn-regex/blob/master/README-cn.md#learn-regex"><strong>The</strong></a> fat cat sat on the mat. |
?!...
前置约束-排除:--->就是后面不能存在的字符
4.2 前置约束-排除 ?!
用于筛选所有匹配结果, 筛选条件为 其后不跟随着定义的格式 前置约束-排除
定义和 前置约束(存在)
一样, 区别就是 =
替换成 !
也就是 (?!...)
.
表达式 (T|t)he(?!\sfat)
匹配 The
和 the
, 且其后不跟着 (空格)fat
.
1 |
"(T|t)he(?!\sfat)" => The fat cat sat on <a href="https://github.com/zeeshanu/learn-regex/blob/master/README-cn.md#learn-regex"><strong>the</strong></a> mat. |
?<= ...
后置约束-存在:--->就是前面必须跟着的字符
4.3 后置约束-存在 记作(?<=...)
用于筛选所有匹配结果, 筛选条件为 其前跟随着定义的格式. 例如, 表达式 (?<=(T|t)he\s)(fat|mat)
匹配 fat
和 mat
, 且其前跟着 The
或 the
.
1 |
"(?<=(T|t)he\s)(fat|mat)" => The <a href="https://github.com/zeeshanu/learn-regex/blob/master/README-cn.md#learn-regex"><strong>fat</strong></a> cat sat on the <a href="https://github.com/zeeshanu/learn-regex/blob/master/README-cn.md#learn-regex"><strong>mat</strong></a>. |
?<!...
后置约束-排除:--->就是前面必须不能存在的字符
4.4 后置约束-排除 记作 (?<!...)
用于筛选所有匹配结果, 筛选条件为 其前不跟着定义的格式. 例如, 表达式 (?<!(T|t)he\s)(cat)
匹配 cat
, 且其前不跟着 The
或 the
.
1 |
"(?<!(T|t)he\s)(cat)" => The cat sat on <a href="https://github.com/zeeshanu/learn-regex/blob/master/README-cn.md#learn-regex"><strong>cat</strong></a>. |
gitHub链接:https://github.com/zeeshanu/learn-regex/blob/master/README-cn.md#41