python正则表达式大全
Python中的正则表达式(Regular Expressions)是一种强大的文本处理工具,它使用特殊的字符序列来定义搜索模式,这些模式可以匹配、搜索、替换字符串中的文本。Python的re
模块提供了对正则表达式的支持。
以下是一些常用的Python正则表达式元字符和模式的大致概览,但请注意,这远非一个完整的大全,因为正则表达式的可能性和组合几乎是无限的。
基本元字符
.
:匹配除换行符以外的任意字符。^
:匹配字符串的开始。$
:匹配字符串的末尾。*
:匹配前面的子表达式零次或多次。+
:匹配前面的子表达式一次或多次。?
:匹配前面的子表达式零次或一次。{n}
:n 是一个非负整数。匹配确定的 n 次。{n,}
:n 是一个非负整数。至少匹配 n 次。{n,m}
:m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次。
字符类
[xyz]
:字符集合。匹配所包含的任意一个字符。[^xyz]
:负值字符集合。匹配未包含的任意字符。[a-z]
:字符范围。匹配指定范围内的任意字符。[A-Z]
:同上,但匹配大写字母。[0-9]
:匹配任何数字。等价于\d
。\D
:匹配任何非数字字符。等价于[^0-9]
。\w
:匹配包括下划线的任何单词字符。等价于[A-Za-z0-9_]
。\W
:匹配任何非单词字符。等价于[^A-Za-z0-9_]
。
边界匹配器
\b
:匹配一个单词边界,即字与空格间的位置。\B
:非单词边界匹配。
分组和捕获
(...)
:捕获匹配的子串。(?:...)
:非捕获分组,即匹配但不捕获匹配的文本。(?P<name>...)
:命名捕获组,可以通过组名访问匹配的文本。
断言
(?=...)
:正向前瞻断言。此位置之后能够匹配表达式。(?!...)
:负向前瞻断言。此位置之后不能够匹配表达式。(?<=...)
:正向后顾断言。此位置之前能够匹配表达式。(?<!...)
:负向后顾断言。此位置之前不能够匹配表达式。
示例
- 匹配邮箱地址:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
- 匹配IP地址:
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
- 匹配HTML标签:
<[^>]+>
正则表达式的强大之处在于其灵活性和表达能力,但这也意味着它们可能变得非常复杂和难以理解,特别是对于复杂的模式。因此,在使用正则表达式时,建议从简单开始,逐步构建更复杂的模式。同时,利用在线正则表达式测试工具来调试和测试你的表达式也是一个好习惯。