正则表达式学习(二)字符组和分支

上篇讲了正则表达式的元字符和量词,对正则表达式也有了一个初步的了解。这篇学习下字符组和分支

1.字符组

字符组就是用[]来匹配任意一个字符,比如我们想找到包含字符a或u的单词。就可以通过字符组来写规则:

#\b[a-z]*[au][a-z]*#i

另外字符组里-表示范围,如果要匹配包含-的字符,[]里一定要对-进行转义,即[\-],那像(),{}在[]要不要进行转义呢,答案是不需要,因为在[]里(),{}只是作为普通字符。

2.分支

比如我们用c[au]t可以匹配cat或cut。那如果我们像匹配包含任意两个字符,比如au,ou等的话,[]这里就不适用了。怎么办,这时候我们就可以用分支。

分支用()界定,并且用|表示分支。比如我们想匹配地区号码,地区号码一种是3位区号,8位本地号(010-12345678),一种是4位区号,7位本地号码(0371-6811605)

正则表达式就可以写成:

#(0{2}\d[\- ]\d{8}|0\d{3}[\- ]\d{7})#

[\- ]表示中间可以是-或空格符

其中|表示分支。

分支匹配需要注意的一点就是顺序,匹配的时候会优先匹配前面的分支,如果匹配成功了,后面的不再匹配。否则接着匹配后面的分支。

比如上面的会优先匹配区号为3位的,又例如美国的邮编是5位数字,也可能是 连字号间隔的9位数字,则可以写成。

#(\d{5}|\d{5}-\d{4})#

但如果反过来的话就是:

#(\d{5}|\d{5}-\d{4})#

那就是匹配5位的邮编,或者9位邮编的前5位了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值