Python 正则表达式规则
Table of Contents
Python 正则表达式规则整理
1. 基础匹配符
符号 含义 示例
. 匹配任意字符(默认不包含换行) a.c 匹配 abc
\d 数字 123
\D 非数字 abc
\w 字母、数字、下划线 user_1
\W 非字母数字下划线 @#$
\s 空白字符(空格、Tab、换行)
\S 非空白字符
2. 数量控制符
*
匹配 0 次或多次。
a*匹配:
"""a""aaa"+
匹配 1 次或多次。
a+匹配:
aaaa?
匹配 0 次或 1 次。
colou?r匹配:
colorcolour{n}
固定次数:
\d{4}匹配:
2026{n,m}
范围次数:
\d{2,4}匹配:
1212312343. 贪婪匹配和非贪婪匹配
贪婪匹配
默认情况下,正则会尽可能多匹配。
<a>.*</a>文本:
<a>hello</a><a>world</a>结果:
<a>hello</a><a>world</a>非贪婪匹配
在数量符后添加 ?:
<a>.*?</a>结果:
<a>hello</a>常见转换:
贪婪 非贪婪
* *?
+ +?
? ??
{n,m} {n,m}?
4. 分组
捕获组
使用:
(...)作用:
提取需要使用的数据。
示例:
hello (world)Python:
m.group(1)结果:
world非捕获组
使用:
(?:...)作用:
只进行逻辑分组,不保存结果。
示例:
(?:cat|dog)5. 选择
使用:
|示例:
cat|dog匹配:
catdog6. 字符集合
匹配其中一个字符
[abc]匹配:
abc范围
[a-z][A-Z][0-9]排除
[^0-9]表示:
不是数字。
7. 边界
开始
^例如:
^Hello匹配:
Hello world结束
$例如:
world$匹配:
hello world8. Lookaround(约束条件)
特点:
检查条件,但不会消耗匹配字符。
正向先行
(?=xxx)后面必须是 xxx。
例:
hello(?= world)匹配:
hello要求后面存在:
world负向先行
(?!xxx)后面不能是 xxx。
正向后行
(?<=xxx)前面必须是 xxx。
负向后行
(?<!xxx)前面不能是 xxx。
9. Python re 常用参数
DOTALL
re.DOTALL作用:
让 . 可以匹配换行。
IGNORECASE
re.I忽略大小写。
MULTILINE
re.M让 ^ 和 $ 匹配每一行。
10. Agent ReAct 输出解析案例
Thought 提取
r"Thought:\s*(.*?)(?=\nAction:|$)"解析:
Thought:固定标识。
\s*跳过空白。
(.*?)捕获 Thought 内容。
(?=\nAction:|$)约束结束位置:
- 遇到 Action
- 或文本结束
Action 提取
r"Action:\s*(.*?)$"解析:
Action:固定标识。
\s*忽略空白。
(.*?)捕获 Action 内容。
$直到文本结束。
11. 阅读复杂正则的方法
推荐顺序:
- 找捕获组
(...)- 我要提取什么?
- 找边界:
^$(?=)(?<=)
- 找数量:
*+?{}
- 找特殊字符:
\s\d\w.
12. 工程建议
简单固定格式:
优先:
split()index()find()复杂文本解析:
使用:
reLLM 输出解析:
正则通常足够,因为文本规模小,瓶颈一般在模型推理。
核心记忆
最常用:
()(?:).*.*?\s*^$(?=)(?<=)re.DOTALL掌握这些,基本可以处理大部分工程正则场景。
评论 (0)
请先登录后再发表评论