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
posted @ 2025-03-11 18:24  GYXic  阅读(35)  评论(0)    收藏  举报