首页 > 其他 > 详细

正则表达式

时间:2020-12-02 16:22:55      阅读:28      评论:0      收藏:0      [点我收藏+]

11 正则表达式
正则表达式(Regular Expression)简称regex或re,规定一个格式,匹配字符串用
正则在线测试工具:http://tool.chinaz.com/regex
技术分享图片
11.1 普通字符
1)匹配字母
技术分享图片
2)匹配中文
技术分享图片

11.2 元字符(重点)
11.2.1 . 匹配除了换行符以外的所有内容
技术分享图片

11.2.2 \d 和 \D 匹配一个数字
\D 大写表示取反,匹配非数字
1)匹配单个数字:
技术分享图片

2)匹配多个数字
技术分享图片

11.2.3 \w和\W 匹配数字,字母,下划线
\W 大写表示取反,匹配非数字,字母,下划线
技术分享图片
可以使用8个\w匹配8位密码,要求使用数字、字母和下划线:
技术分享图片

11.2.4 \n 匹配换行
技术分享图片

11.2.5 \s和\S 匹配空白(空格、制表符、回车)
\S 大写表示取反,匹配非空白
技术分享图片

11.2.6 \t 匹配制表符

11.2.7 \b 匹配一个单词的开始和结尾

11.2.8 ^xxx 匹配字符串以xxx开始
匹配失败
技术分享图片
匹配成功
技术分享图片

11.2.9 xxx$ 匹配字符串以xxx结束
技术分享图片

11.2.10 a|b 匹配字符a或者匹配字符b
技术分享图片

11.2.11 () 匹配()内的表达式,分组
技术分享图片

11.2.12 [] 匹配字符组中的字符
技术分享图片
使用“-”表示从哪到哪,多种数据组合,效果=\w
技术分享图片

11.2.13 [^…] 匹配字符组中的取反字符
技术分享图片

11.3 量词(重点)
用法:\w\d量词,量词值限定\d,与\w无关
11.3.1 * 匹配0次或多次,尽可能多的匹配字符
技术分享图片
.*可以匹配换行符以外的所有字符
技术分享图片

11.3.2 + 匹配1次或多次,尽可能多的匹配字符
技术分享图片

11.3.3 ? 匹配0次或1次,每个字符单独判断
技术分享图片

11.3.4 {n} 表示重复n次后再匹配
技术分享图片

11.3.5 {n,} 表示重复n次或更多次
技术分享图片

11.3.6 {n,m} 表示重复n次到m次
技术分享图片

11.4 惰性匹配和贪婪匹配
11.4.1 在量词中*,+,{}都属于贪婪匹配
就是尽可能多的匹配到结果
技术分享图片

11.4.2 惰性匹配
在使用.*后面如果加了?则是尽可能少的匹配,表示惰性匹配

11.4.3 .*?xxx找到下一个xxx为止
技术分享图片

11.5 分组
在正则中使用()进行分组。老的身份证号有15位,新的身份证号18位,并且新的身份证号结尾有可能是x。
正则表达式:
1)[1]\d{13,16}[0-9x]$
以数字1-9开始,中间13到16位数字,最后0-9或x结束。匹配15-18位的号码,应该是15位或18位的号码,结果错误。
技术分享图片

2)[2]\d{14}(\d{2}[0-9x])?$
以数字1-9开始,中间14位数字,最后一部分由两个数字上0-9或x。最后一部分出现0次或1次,出现0次为15位,出现1次为18位。可以正确匹配
技术分享图片

3)^([1-9]\d{16}[0-9x]|[1-9]\d{14})$
|号前面是18位表达式,|号后面是5位表达式。可以正确匹配
技术分享图片

11.6 转义符
在正则表达式中,有很多有特殊意义的元字符,比如\n和\s等。如果要在正则中匹配正常的“\n”而不是“换行符”,就需要对“\”进行转义变成“\n” 。如果需要匹配“\n”,正则里就要写成“\\n”。在python中,可以使用取消转义,r“\n”来表示。
1)匹配“\n”
技术分享图片

2)匹配“\n”
技术分享图片

3)python中匹配“\n”
技术分享图片

11.7 练习
11.7.1 练习1:匹配邮箱 homexue@126.com 448910663@qq.com
技术分享图片

11.7.2 练习2:匹配

fdsafdsa

技术分享图片

匹配多组数据时,会被合并成一条数据,例如:匹配

少林
武当
,需要改进
技术分享图片

.*后面加?,使用回溯算法。可以得到正确答案
技术分享图片

11.7.3 练习3:匹配ip地址
技术分享图片
ip地址分为4段,每段的规则相同。每段ip地址分为4种情况:
250-255对应表达式:25[0-5]
200-249对应表达式:2[0-4]\d
100-199对应表达式: [0-1]\d{2},可以应对010.011.012.001这种写法
1-99对应表达式:[1-9]?/d
四种情况组合:(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)
ip地址的表达式,将相同的四段用“.”(“.”前面需要加转义符“\”)连接即可:(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d).(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d).(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d).(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)


  1. 1-9 ??

  2. 1-9 ??

正则表达式

原文:https://www.cnblogs.com/bdzxh/p/14073949.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!