Python基础 - 10正则与re
正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、及特定字符的组合,组成一个"规则字符串"。
Regular Expression 普通字符(如a到z之间的字母) 特殊字符(元字符)
\A: 表示从字符串的开始处匹配。
\Z: 表示从字符串的结束处匹配,如果存在换行,只匹配换行前的结束字符串。
\b: 匹配一个单词边界,也就是单词和空格间的位置。 如 'py\b' 可以匹配 "python" 的py,不能匹配 "openpyxl"的py。
\B: 匹配非单词边界。 'py\b' 可以匹配 "openpyxl"的py,不能匹配 "python" 的py。
\d: 匹配任意数字。 等价于 [0-9]。
\D: 匹配任意非数字字符。 等价于 [^\d]。
\s: 匹配任意空白字符。 等价于 [\t\n\r\f]。
\S: 匹配任意非空白字符。 等价于 [^\s]。
\w: 匹配任意字母数字及下划线, 等价于 [0-9a-zA-Z_]。
\W: 匹配任意非字母数字及下划线, 等价于 [^\w]。
\\: 匹配原义的反斜杠\。
量词:
re*: 匹配 0个 或 多个表达式
re+: 匹配 1个 或 多个表达式
re?: 匹配 0个 或 1个前面的正则表达式。
re{m}: 匹配 m个前面的正则表达式。
re{m,}: 匹配 m个或多个前面的正则表达式。
re{m,n}: 匹配 m到n个前面的正则表达式。
非贪婪模式: *? +? ?? {m,n}?
^: 匹配字符串的开头。
$: 匹配字符串的结尾。
.: 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[...]: 用来表示一组字符, 单独列出。 如[amk] 匹配 'a','m'或'k'
(re): 匹配括号内的表达式, 也表示一个组
a|b: 匹配a 或 b
findall 匹配整个字符串,找到一个继续向下找,直到字符串结尾
Python中数量词默认是贪婪的,总是尝试匹配尽可能多的字符。非贪婪尝试匹配尽可能少的字符。
在 "*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。