概述正则表达式

昨天在牛客网刷试题的时候有一道关于较复杂的正则表达式,一脸懵逼,所以想着今天总结整理一下。然后在GItHub上看了看,这篇不错:Github上关于正则表达式的介绍

概述正则表达式

(1)正则表达式是什么

正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子.
正则表达式的基本组成

(2)基本匹配

正则表达式其实就是在执行搜索时的格式, 它由一些字母和数字组合而成. 例如: 一个正则表达式 the, 它表示一个规则: 由字母t开始,接着是h,再接着是e.

“the” => The fat cat sat on the mat.

正则表达式是大小写敏感的, 所以The不会匹配the.

(3)元字符

正则表达式主要依赖于元字符.
元字符不代表他们本身的字面意思, 他们都有特殊的含义. 一些元字符写在方括号中的时候有一些特殊的意思. 以下是一些元字符的介绍:

(4)简写字符集

(5)前后关联约束

前置约束和后置约束都属于非捕获簇(用于匹配不在匹配列表中的格式). 前置约束用于判断所匹配的格式是否在另一个确定的格式之后.
例如, 我们想要获得所有跟在 $ 符号后的数字, 我们可以使用正向向后约束 (?<=$)[0-9.]*. 这个表达式匹配 $ 开头, 之后跟着 0,1,2,3,4,5,6,7,8,9,. 这些字符可以出现大于等于 0 次.
前后关联约束如下:

(5.1)前置约束(存在)

?=… 前置约束(存在), 表示第一部分表达式必须跟在 ?=…定义的表达式之后.
返回结果只瞒住第一部分表达式. 定义一个前置约束(存在)要使用 (). 在括号内部使用一个问号和等号: (?=…).
前置约束的内容写在括号中的等号后面. 例如, 表达式 [T|t]he(?=\sfat) 匹配 The 和 the, 在括号中我们又定义了前置约束(存在) (?=\sfat) ,即 The 和 the 后面紧跟着 (空格)fat.

“[T|t]he(?=\sfat)” => The fat cat sat on the mat.

(5.2)前置约束(排除)

前置约束-排除 ?! 用于筛选所有匹配结果, 筛选条件为 其后不跟随着定义的格式 前置约束-排除 定义和 前置约束(存在) 一样, 区别就是 = 替换成 ! 也就是 (?!..).
表达式 [T|t]he(?!\sfat) 匹配 The 和 the, 且其后不跟着 (空格)fat.

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

(5.3)后置约束(存在)

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

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

(5.4)后置约束(排除)

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

“(?<![T|t]he\s)(cat)” => The cat sat on cat.

(6)标志

标志也叫修饰语, 因为它可以用来修改表达式的搜索结果. 这些标志可以任意的组合使用, 它也是整个正则表达式的一部分.

“/The/gi” => The fat cat sat on the mat.
“/.(at)/g” => The fat cat sat on the mat.
“/.at(.)?$/gm” => The fat
cat sat
on the mat.

毕竟部分是复制粘贴的,效果当然没有原来写的好,建议大家还是去https://github.com/ShixiangWang/learn-regex/blob/master/README-cn.md,写的挺不错的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值