Python 正则表达式:核心元字符、预定义字符集与对象方法详解
本文系统介绍 Python 中正则表达式的核心语法,涵盖点号、锚点、量词等元字符的匹配规则,解析 \d、\w 等预定义字符集及边界符用法,并详细说明 RegexObject 的 match、search、findall、finditer 方法以及 MatchObject 的 group、start、end、span 属性,结合编译标志如 DOTALL、IGNORECASE 等,帮助开发者掌握高效字符串匹配技巧。
Python 正则表达式核心语法与对象方法详解
1. 元字符基础 点号(.)用于匹配除换行符以外的任意字符;若启用 alternate 模式(即 re.DOTALL 标志),它也能匹配换行符。 脱字符(^)用于匹配字符串的起始位置;除非设置 MULTILINE 标志,否则它仅匹配整个字符串的开始处。 美元符号($)用于匹配字符串的结束位置,或者换行符之后的位置。 星号(*)表示前面的元素可以重复 0 次或多次。 加号(+)表示前面的元素可以重复 1 次或多次。 问号(?)表示前面的元素可以重复 0 次或 1 次。 花括号({})作为限定符,指定前面的元素至少重复 m 次,最多重复 n 次。 方括号([])用于指定一个字符集合,即匹配集合中的任意一个字符。 反斜杠(\)后接不同字符可表示特殊含义,也可用于转义所有元字符,使其在模式中匹配自身。 竖线(|)表示“或”操作,即匹配左侧或右侧的模式。 圆括号(())用于定义分组。 2. 字符类别示例 例如 [akm$] 将匹配字符 "a"、"k"、"m" 或 "$" 中的任意一个;虽然 "$" 通常作为元字符使用,但在字符类别内部,其特殊含义被移除,恢复为普通字符。 3. 预定义字符集与边界符 以反斜杠开头的特殊字符表示预定义的字符集合: \d 匹配任何十进制数字,等价于类 [0-9]。 \D 匹配任何非数字字符,等价于类 [^0-9]。 \s 匹配任何空白字符,等价于类 [ \t\n\r\f\v]。 \S 匹配任何非空白字符,等价于类 [^\t\n\r\f\v]。 \w 匹配任何字母数字字符及下划线,等价于类 [a-zA-Z0-9_]。 \W 匹配任何非字母数字字符及非下划线字符,等价于类 [^a-zA-Z0-9_]。 \A 仅匹配字符串的绝对起始位置;在 MULTILINE 模式之外,\A 与 ^ 效果相同;但在 MULTILINE 模式下,\A 只匹配字符串开头,而 ^ 还可以匹配换行符后的位置。 \Z 仅匹配字符串的绝对结束位置。 \b 表示单词边界,这是一个零宽断言,用于匹配单词的词首和词尾。单词被定义为字母数字序列,因此词尾由空白符或非字母数字字符标识。 \B 是另一个零宽断言,与 \b 相反,仅在当前位置不在单词边界时匹配。 4. 重复元字符总结 * 表示重复 0 次或多次。 + 表示重复 1 次或多次。 ? 表示重复 0 次或 1 次。 {m,n} 其中 m 和 n 为十进制整数,表示前面的元素至少重复 m 次,最多重复 n 次。 5. RegexObject 对象常用方法 match():判断正则表达式是否在字符串的起始位置匹配。 search():扫描整个字符串,找到第一个匹配正则表达式的位置。 findall():查找正则表达式匹配的所有子串,并以列表形式返回。 finditer():查找正则表达式匹配的所有子串,并以迭代器形式返回。 6. MatchObject 对象常用方法 group():返回被正则表达式匹配的字符串部分。 start():返回匹配开始的位置索引。 end():返回匹配结束的位置索引。 span():返回一个元组,包含匹配的起始和结束位置 (start, end)。 7. 编译标志说明 DOTALL (S):使点号(.)能够匹配包括换行符在内的所有字符。 IGNORECASE (I):使匹配过程忽略大小写。 LOCALE (L):执行本地化识别(locale-aware)匹配。 MULTILINE (M):启用多行匹配,影响 ^ 和 $ 的行为。 VERBOSE (X):允许使用 verbose 模式编写正则表达式,使表达式结构更清晰、易读。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













