正则表达式总结2

逻辑分组

语法含义举例
|逻辑或,表示两边的都可以匹配ab|cd可以匹配ab和cd
(...)

被括号包括的是一个分组,每一个分组都有一个编号,从左到右

每遇一个(则编号加1,常结合|使用。

(ab|cd|ed) 可以匹配ab,cd,ef
(?P<NAME>....)

在(...)原有编号的基础上,指定一个名字NAME

(?P<test>123|456|789)给这个分组

指定一个test的名字

\number引用前面的几号分组的内容

如(\d)ab\1中\1引用前面的(\d)匹配内容相同,即匹配

1ab1,2ab2,3ab3

(?P=NAME)引用名称为NAME的分组

如(?P<test>\d)ab(?P=test)等价于前面的(\d)ab\1

 

 

 

 

 

 

 

 

 

 

 

 

 

注意:关于最后一个(?P=NAME)和(?P<NAME>..)几乎不常用,很多不支持
验证\number的匹配:

常用POSIX字符

在Linux的字符串匹配中应用的比较广泛

字符说明简写
[:digit:]十进制数字

\d

[:xdigit:]任何十六进制数字 
[:alpha:]任何字母包括大小写 
[:lower:]小写字母 
[:upper:]大写字母 
[:alnum:]任何字母或数字\w
[:space:]空白字符,包括空格\s
[:print:]任何可打印字符 
[:graph:]任何可打印字符,但不包括空格 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在grep函数中需要在外层再加一个[ ]符号

匹配任意字母和数字组成的字符串

 匹配非数字开头的由字母数字组成的字符串

 

贪婪匹配和懒惰匹配

贪婪匹配:尽可能匹配多的字符串
量词默认贪婪匹配,如+,*,{m,n},?

例子:

 

懒惰匹配:尽可能匹配少的字符串

在量词的后面加一个?,如+?,*?,{m,n}?,??等,原意不变但尽可能少的匹配字符串

例子:

 


常用匹配

身份证匹配(15位或者18位):

\d{15}|(\d{18}|(\d{17}[Xx]))

 QQ邮箱匹配(10000开始):

[\w.-]{3,18}@qq\.com

匹配QQ号:

[1-9]\d{4,}

 数字,字母,下划线组成的字符串:

^[A-Za-z0-9]+$

 日期格式:

^\d{4}-\d{1,2}-\d{1,2}$

 匹配HTML中的URL:

(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?

 


转载于:https://www.cnblogs.com/zyx2019/p/11127608.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值