正则表达式,用理解代替记忆(基于Perl)

正则表达式的基本写法:

/需要匹配的内容/

最简单的就是/Aa1/,匹配一个"Aa1"字符串。


如果想要匹配多个字符,最基本的写法就是

/a{想要匹配的数量}/

如果想要匹配一个确定的数量,比如3,就写成:/a{3}/

如果想要匹配的是一个范围,比如1-3,就写成:/a{1,3}/

如果想要匹配的是一个一边确定的范围,就写成:/a{,3}/或者是/a{1,}/


针对常用的数量匹配模式,有三个快捷符号:

+表示至少有1个(+可以理解为正数,因此至少大于0)

*表示也许有也许没有(*经常做通配符用,可以结合这点去理解)

?表示,也许有1个,也许没有(?代表不确定有没有,把有理解为1,把无理解为0)


如果想匹配的是多个字符,比如说abc,那么,可以用()将abc包起来

比如,/(abc)+/表示有至少1个abc的组合


那如果要匹配的是一个不确定,但是知道范围的字符,可以通过[]来代替

例如,要匹配的是个数字,那就是[0-9]

要匹配的是一个小写字母,那就是[a-z]

要匹配的是一个大写字母,那就是[A-Z]

如果是个数字或者字母,要注意顺序[0-9a-zA-Z]


相应的,也有快捷符号对应这些常用的范围

例如:

/d代表数字

/w代表数字或者字母

/s代表空白,例如\r\t\n\f

相应的,对应字母的大写代表反之

/D代表非数字

/W代表非数字或者字母

/S代表非空白


理解了这些,基本的正则表达式就会写了。还有一个就是关于匹配边界的问题。

^代表字头,$代表字尾,这个没有太好的方法帮助理解,但是可以使用另一种写法

\A代表字头,\Z代表字尾(仅代表Perl)

或者使用\b,把\b放前面就表示前面的边界,放后面就表示后面的边界,放两边自然就是两边的边界

还有一个\B,表示的是内部,其实就是非边界,可以简单理解为跟\b相反


对于比较特殊的类型匹配,比如说不在同一个范围的多个类型,例如Zt6和和g2F,必须匹配这两种,这个时候就要用到"|"这个符号了

在逻辑判断中,“|”代表或,在正则表达式中,这个也代表或,上面的例子其实可以写成/(Zt6)|(g2F)/,这样,就能顺利匹配到这两种组合了。


还有可能需要了解的就是几个匹配模式选项了:

g:匹配所有可能的模式,这个是模糊查找的时候,防止只匹配到第一个值就退出 general

i:忽略大小写,ignore case

m:将匹配串视为多行,进行跨行匹配的时候使用

s:将待匹配串视为单行,进行跨行匹配的时候使用

ms两者的区别在于,m将表达式视为每个单元之间有个\n?,而s将待匹配对象视为单行字符串,即换行用/n代替的一行字符串

x:忽略表达式中的空格,应该是方便那些习惯打空格的人使用

这些匹配模式选项的用法就是将对应的字母接在正则表达式的末尾,可以结合使用

还有一些没提到的建议需要使用的人士自行学习。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值