re
约 545 个字 预计阅读时间 5 分钟
python 的 re 模块是正则表达式 (Regular Expression) 的标准库,通过 import re 导入
常用函数有:
re.search():在整个字符串中找到第一个匹配re.match(): 只从字符串开头开始匹配re.fullmatch():要求整个字符串完全匹配re.findall(): 找出所有匹配并返回列表re.compile():编译出一个 re 对象以复用re.sub():匹配模式并替换为指定的字符串
常见正则语法:
-
基本字符:表示自己本身,例如
r"abc" -
元字符:
-
.:匹配任意单个字符(默认不匹配换行) ,加上 DOTALL flag 后可以匹配包括换行符在内的所有字符 -
\d:匹配数字,等价于[0-9] -
\D:匹配非数字 -
\w:匹配字母、数字、下划线,等价于[A-Za-z0-9_] -
\W:匹配非“单词字符” -
\s:匹配空白字符,包括空格、tab、换行符 -
\S:匹配非空白字符
-
-
字符集:
[abc]:匹配中括号中 a、b、c 任一字符[^abc]:^放在中括号里表示非
-
重复次数:
*:前一个模式出现 0 次或多次+:前一个模式出现 1 次或多次?:前一个模式出现 0 次或一次 (*?表示非贪婪匹配 ){n}:前一个模式恰好出现 n 次{n,}:前一个模式出现至少 n 次{n,m}:前一个模式出现 n 到 m 次
Tip
在字符集 [] 外面,要匹配这些特殊符号例如 +,? 需要加 \ 进行转义,但是在字符集内部,这些字符就失去了作为重复次数的特殊含义,就不需要转义了
- 其他符号:
^:匹配字符串开头$:匹配字符串结尾|:或运算:例如r"cat|dog"():分组- re 通常返回的是 match 对象,可以通过 match.group(0) 返回匹配到的完整文本,group(1)、group(2) ... 依次返回第一个、第二个 ... 个分组结果
常见 flags:
re.I或re.IGNORECASE:忽略大小写re.S或re.DOTALL:让.也能匹配换行
断言:
(?=...):要求当前位置后面是某个模式(?!...):要求当前位置后面不是某个模式(?<=...):要求当前位置前面是某个模式(?<!...):要求当前位置前面不是某个模式