神奇的正则表达式

正则表达式是一种模式模板,可以用来过滤文本。在各种编程语言中都可使用。

1. 纯文本

如果正则表达式只由纯文本组成,那么匹配的结果就包含表达式的内容。如果正则表达式是'es',那么'test'、'destination'、'restaurant' 都可以匹配到。

2. 元字符. * [ ] ^ $ { } \ + ? | ( )

这些是正则表达式中的特殊字符,如果需要匹配自身,需要进行转义。下边分别对这些元字符进行讲解:

点号:匹配一个任意字符

方括号:在方括号中间的字符组成字符组,匹配字符组中任意一个字符,一位。例如:[0-9] 表示 0-9 的任意一个数字,[abc] 表示a、b、c的任意一个,如果想排除字符组的内容,使用[^字符],比如[^/] 表示除斜杠外的任意字符

锚字符(^和$):标示字符的开始和结尾,可以分别使用

星号:对星号前一个字符进行任意次匹配(0到正无穷)

加号:对正号前一个字符进行1到正无穷次匹配

问号:对问号前一个字符进行0或1次匹配

花括号:指定字符次数,{m} 代表字符出现 m 次,{m,} 代表字符出现 m 次或更多次,{m,n} 代表字符出现 m 到 n 次

竖线:代表“或”

圆括号:对字符进行分组,可以把分组中的字符作为整体来处理。可以分多个组,后边可以使用数字指定第几个组来使用。(exp) 代表匹配 exp 并记录下来,(?:exp) 代表只匹配不记录,          (?<name>exp) 代表使用 name 给组命名,其他效果和 (exp) 一样。

反斜杠:转义。以上这些元字符如果想匹配自身,都需要使用反斜杠来转义

3. 预定义字符集\d \D \s \S \w \W \b \B \A \Z

\d 代表数字 [0-9]

\D 代表非数字 [^\d]

\s 代表空白字符 [<空格>\t\r\n\f\v],其中 \t 代表水平制表符,\r 代表回车符,\n 代表换行符,         \f 代表换页符,\v 代表垂直制表符

\S 代表非空白字符 [^\s]

\w 代表单词字符 [A-Za-z0-9_]

\W 代表非单词字符 [^\w]

\b 代表单词的头或尾,类似^ $,例如:'\bthe\b' 只能匹配 the

\B 代表不是单词的头或尾,例如:'\Bthe\B' 可以匹配 another,但不能匹配 the

\A 代表字符串的开头

\Z 代表字符串的末尾

4. 贪婪与非贪婪*?  ??  +?

这个特性在使用 * ? + 时会有影响。默认是贪婪匹配,即匹配能匹配的最长长度。例如,正则表达式为'1.*3',要匹配的是'123123',那么就会匹配出完整的123123。如果指定了非贪婪模式,只要加个问号即可,将正则表达式改为'1.*?3',匹配到的就会是123。问号和加号的非贪婪模式也是增加一个问号(?? +?)。

5. 零宽度断言

(?=exp) 匹配 exp 前面的位置,例如:\b\w+(?=tion\b) 匹配 location,destination 的时候结果是 loca,destina

(?<=exp) 匹配 exp 后面的位置,例如:(?<=\bsp)\w+\b 匹配 speak,sports 的时候结果是 eak,orts

(?!exp) 匹配后面跟的不是 exp 的位置,例如:\bloca(?!tion\b) 不会匹配 location,但可以匹配local

(?<!exp) 匹配前面的不是 exp 的位置,例如:(?<!\bloca)tion\b 不会匹配 location,但可以匹配 destination

与正则表达式关系最紧密的应该就是 grep 命令了,可以看看我的另一篇文章:

linux 命令:grep 详解_yspg_217的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值