天天看点

Python基础 - 10正则与re

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}"后面加上?,使贪婪变成非贪婪。