python正则表达式
正则表达式元字符
- 常见
^ 匹配字符串的起始位置
$ 匹配字符串的结束位置
. 匹配除了换行符以外的任意字符
* 匹配 "*" 前面的表达式任意次
? 匹配前面的表达式0或1次
+ 匹配前面的表达式1或多次
| 对两个匹配条件进行or运算
() 将括号里面视为一组
\ 类似于转义字符,在匹配特殊字符时使用:\ 和 '和 "和 ( 和 )
re.match(r'c:\\', 'c:\\a').group(0) 过滤后为 c:\,转义了前面的 \
- 自己可以设条件
{n} 匹配n次
{n,} 最少匹配n次
{n,m} 最少匹配n次,最多m次
- 自带条件
[0-9] 匹配数字
[a-z] 匹配字母
[A-Z] 大写字母
[a-zA-Z0-9] 任意字母和数字
[\u4e00-\u9fa5] 所有中文字符
\u 是 Unicode 转义字符的前缀,用于表示 Unicode 编码的字符。
\u4e00-\u9fa5 是一个 Unicode 范围,表示从 \u4e00 到 \u9fa5 的所有字符。
具体解释:
\u4e00 是汉字“一”(U+4E00)的 Unicode 编码。
\u9fa5 是汉字“龥”(U+9FA5)的 Unicode 编码。
因此,\u4e00-\u9fa5 表示所有常见的汉字字符范围,涵盖了大部分简体和繁体汉字。
- 特殊条件
\d 1个数字字符
\D 1个非数字字符
\w 任意单词字符,包含下划线
\W 任意非单词字符
\s 不可见字符,空格,换行,制表,换页符等
\S 可见字符
\A 字符串开始
\z 字符串结束
\Z 字符串结束,如果换行,只匹配到换行之前的内容
\G 最后匹配完成的位置
\b 单词边界
\B 非单词边界
\n,\t 换行,制表符
\<number> 引用编号位number的组匹配的字符串
- 复杂使用
(?#....) '#'后的内容作为注释,忽略
(?=....) 目标字符串之后紧跟的字符串,需要匹配 '=' 之后的表达式
(?!....) 目标字符串之后紧跟的字符串,需要不匹配 '=' 之后的表达式
(?<=...) 目标字符串之前紧跟的字符串,需要匹配 '=' 之后的表达式
(?!<...) 目标字符串之前紧跟的字符串,需要不匹配 '=' 之后的表达式
使用
re.match
re.match(pattern, string)
pattern ==>'[a-z]*' string ==>要过滤的语句 都是字符串
re.match(r'[a-z]*' , 'hello111').group(0)
re.match(r...)
含有转义字符时,在正则表达式前加 "r"
re.compile
re.compile(pattern, flags)
pattern = re.compile(r'[a-z]*']
re.match(pattern, 'hello111').group(0)
区别:
re.match中 type(pattern) = string
re.compile中 type(pattern) = 正则表达式对象
flags 的值
| re.I | 忽略大小写 | |
|---|---|---|
| re.M | 多行模式 |
pattern1 = re.compile(r'[a-z] + [a-z] +' ,re.I)
re.match(pattern1, 'Hello paTHon').group(0) ==> Hello paTHon

浙公网安备 33010602011771号