正则表达式学习笔记

正则表达式:

正则表达式是一种查找以及字符串替换操作

基础语法;

字符:

 匹配自身 比如cat匹配ca t

元字符:

.表示匹配任意一个字符c.t匹配c然后任意字符然后匹配t;

\转义字符,可以忽略元字符c\.t表示匹配c然后.然后t

字符类:

用[],匹配[]中间任意一个:[cat]匹配c或者a或者t;

重复不起作用[aab]还是匹配a或者b;

[b-f]表示匹配b-f范围内任意一个字母;

^表示反义,[^ab]匹配非ab的;

[.]匹配任意一个全角句号

转义字符:

\d匹配0-9任意一个数字;\w匹配[0-9A-Za-z]任意一个字母或数字;\s匹配任意空值(空格制表回车换行等);

\D匹配任意一个非数字\W匹配任意一个非数字非字母的\S匹配任意一个非空值

重复:

{}表示重复: a{3}表示匹配aaa; a{1,3}表示匹配aaa或aa或a,这样的表示出循环范围的会优先匹配最长的;

?:循环0次或1次同{0,1};

*表示循环大于0次,与{0,}同,.*表示匹配任意内容

+表示循环1次及以上,同{1,} \w+表示匹配一个单词

注:加?时可以实现非贪婪匹配:a{1,3}?表示匹配a或aa或aaa

选择匹配:

用|

cat|dog表示匹配cat或者dog; a|b|匹配a或b或空;a|b|c同[abc]

[cat|dog]表示匹配a或c或d或g或o或t或|

分组:

用() (Septem|Octo)ber表示匹配Septemer或者October

单词分隔符:

\b分隔单词 \b\w\w\w\b表示匹配一个三字母单词

^表示匹配行开始位置 $表示匹配行结束位置 ^$表示匹配一个空行

\A \z表示文本的开始和结束符号

 

捕获和替换

(\w+)had a ((\w+)\w+) 共有三个捕获组,从左到右编号123(按照左括号个数)

I had a nice day 1:I  2:nice day 3:nice

替换时,捕获组内容和捕获组编号之间用-连接

 (\d\d)/(\d\d)/(\d\d)匹配mm/dd/yy格式的日期;替换成yyyy-mm-dd格式则 20\3-\1\2:如 04/05/13会替换成2013-04-05

反向引用:

在正则表达式中用到捕获组就是反向引用;{[abc]}\1表示只匹配aa或者bb或者cc;

使用正则表达式编程:

java语言没有特殊标出正则表达式,所以要注意\的使用;比如String re = “\\d” 表示匹配任意一个数字;而有些语言是标识出正则表达式的,比如JS中用/  /\d/表示匹配一个数字;

注意事项:

一般不要在循环体中使用正则表达式因为效率很低;

一般不要用正则表达式匹配邮箱,最有效的方式是发送验证邮件;

一般不要用正则表达式匹配姓名,因为情况很复杂;

一般不要用正则表达式来解析HTML或者XML,有其他更好方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值