正则表达式
2023-03-22 23:04:51 7 举报
AI智能生成
登录查看完整内容
正则表达式
作者其他创作
大纲/内容
查询所有的匹配项目,返回一个列表
查询匹配项,只要找到1次就停止,返回re.Match object对象,通过re.group获取结果,如果返回值为None,re.group抛出异常(AttributeError: 'NoneType' object has no attribute 'group')
re模块
所有的规则中的字符就可以刚好匹配到字符串中的内容
定义:在正则表达式中能够帮助我们表示匹配内容的符号都是正则中的元字符
描述的是一个位置上能出现的所有可能性
[abc]
匹配a或者b或者c
一个中括号只表示一个字符位置
[0-9]: 匹配0~9之间的任意一位数字字符
[a-z]: 匹配a~z之间的任意一位字符
[A-Z]: 匹配A~Z之间的任意一位字符
[1-9][0-9]: 匹配1~9之间任意数字开头的2位数字
根据ascii码进行范围比对
字符组: []
digit
匹配任意一位数字
[0-9]
\\d
word
匹配任意一位数字、字母、下划线
[0-9a-zA-Z_]
\\w
空格: 用空格匹配
空格|tab| enter
匹配所有空格
\\s
\\t: 匹配 tab键
\: 匹配enger键
非数字字母下划线
\\W
非数字
\\D
非空白
\\S
匹配所有的数字和非数字 -》 匹配所有
[\\d\\D]
匹配所有的字母数字下划线和所有的非数字字母下划线 - 》 匹配所有
[\\w\\W]
匹配所有的空白和非控办 -> 匹配所有
[\\s\\S]
匹配除了**换行符**之外的所有
.
[^\\d]: 匹配所有的非数字
[^1]: 匹配非数字1的字符
非字符组: [^]
匹配一个字符串的开始
永远放在正则表达式的开头
^
匹配一个字符串的结尾
永远放在正则表达式的结尾
$
或
匹配a表示或者b表达式的内容,如果匹配a成功了,不会继续和b匹配,所以如果两个表达式有重叠的部分,总是把长的放在前边
a表达式|b表达式:
|
约束 | 描述的内容的范围问题
www\\.(taobao|jd|tianmao)\\.com
分组
()
都是表示能匹配哪些内容,一个元字符总是表示一个字符位置上的内容
\\t
\
1
[]
[^]
2
3
4
记忆元字符
元字符
表示匹配n次
{n}
表示匹配至少n次
表示至少匹配n次,至多m次
表示匹配0次或1次
?
表示匹配1次或多次
+
表示0次或多次
*
\\d+
任意整数
\\d+\\.\\d+
任意小数
(\\d+\\.\\d+)|\\d+
\\d+(\\.\\d+)?
任意整数或小数
匹配0次问题:
1[3-9]\\d{9}
匹配手机号码
^1[3-9]\\d{9}$
判断用户输入的内容是否合法,如果用户输入的对就能查看到结果,如果输入的不对就不能查到结果
从一个大文件中找到所有符合规则的内容
练习:
量词
在量词范围允许的情况下,尽量多的匹配
回溯算法
贪心算法
表示匹配任意字符,任意多次数,遇到最后一个才停下来
.*x
贪婪匹配
在量词后面加上?号,表示非贪婪匹配
表示匹配任意字符,任意多次数,但是一旦遇到x就停下来
.*?x
非贪婪匹配(惰性匹配)
贪婪匹配和非贪婪匹配
原本有特殊意义的字符,到了表达它本身意义的时候,需要转义
[.]: 表示 .
[().*?]: 表示 ().*?,在字符组中会取消这些字符的特殊意义
[a\\-c]: - 在字符组中表示范围,如果不希望它表示范围,需要转义,或者放在字符组的最前面
有一些有特殊意义的内容,放在字符组中,会取消它的特殊意义
转义符
^[1-9]\\d{14}$
15位:第一位 1~9 总共15位
^[1-9]\\d{16}(\\d|X)$
18位:第一位 1~9中间16位数字最后一位 0-9/X
^[1-9]\\d{16}[\\dX]$|^[1-9]\\d{14}$
^([1-9]\\d{16}[\\dX]|[1-9]\\d{14})$
^[1-9]\\d{14}(\\d{2}[\\dX])?$
18/15位身份证号
匹配身份证号
正则规则
https://tool.chinaz.com/regex/
正则表达式
0 条评论
回复 删除
下一页