[正则表达式]前后关联约束(前后预查)

工具收藏 phil 1年前 (2018-05-07) 1269次浏览 0个评论

简介:

  1. ?=... 前置约束(存在):--->就是后面要跟着的字符
  2. ?!... 前置约束-排除:--->就是后面不能存在的字符
  3. ?<= ... 后置约束-存在:--->就是前面必须跟着的字符
  4. ?<!... 后置约束-排除:--->就是前面必须不能存在的字符

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.

在线练习

4.2 ?!... 前置约束-排除:--->就是后面不能存在的字符

前置约束-排除 ?! 用于筛选所有匹配结果, 筛选条件为 其后不跟随着定义的格式 前置约束-排除 定义和 前置约束(存在) 一样, 区别就是 = 替换成 ! 也就是 (?!...).

表达式 (T|t)he(?!\sfat) 匹配 The 和 the, 且其后不跟着 (空格)fat.

在线练习

4.3 ?<= ... 后置约束-存在:--->就是前面必须跟着的字符

后置约束-存在 记作(?<=...) 用于筛选所有匹配结果, 筛选条件为 其前跟随着定义的格式. 例如, 表达式 (?<=(T|t)he\s)(fat|mat) 匹配 fat 和 mat, 且其前跟着 The 或 the.

在线练习

4.4 ?<!... 后置约束-排除:--->就是前面必须不能存在的字符

后置约束-排除 记作 (?<!...) 用于筛选所有匹配结果, 筛选条件为 其前不跟着定义的格式. 例如, 表达式 (?<!(T|t)he\s)(cat) 匹配 cat, 且其前不跟着 The 或 the.

在线练习

 

 

gitHub链接:https://github.com/zeeshanu/learn-regex/blob/master/README-cn.md#41


版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明[正则表达式]前后关联约束(前后预查)
喜欢 (0)