基本符号
通配符 | 含义 | 例词 |
* | 0或多个字符 | *text: text, context, pretext…but not “texts” |
+ | 0或1个字符 | text+: text, texts |
? | 1个字符 | b?d: bid, bad, bed, but not “bird”. |
@ | 0或1个词 | In @ case: in case, in the case, in any case, etc. |
# | 1个词 | In # case: in this case, in that case, in any case… |
| | 或者 | text|texts: “text” and “texts” |
$ | 匹配字符串的结束位置 | |
/ | 或者,两者中取一项 |
括号用法
()小括号表示匹配括号中全部字符。
[ ]中括号表示匹配括号中一个字符范围描述如[0-9 a-z A-Z]。
{ }大括号用于限定匹配次数如{n}表示匹配n个字符;{n, }表示至少匹配n个字符;{n, m}表示至少n最多m。
转义字符
转义字符如上基本符号匹配都需要转义字符
\*表示四配*号;
\w 表示英文字母和数字;
\W 非字母和数字;
\d 表示数字;
\D非数字。
常用方法
re.search()只能返回第一个匹配到的对象;
re.findall()可以获得字符串中所有匹配的字符串并且返回值是列表;
re. match()方法: 只匹配字符串开始的位置
re. match尝试从字符串的开始匹配一个模式
re. match的函数原型为: re. match(pattern, string, f1ags)
第一个参数是正则表达式,如果匹配成功,则返回一个Match, 否则返回一个None;
第二个参数表示要匹配的字符串;
第三个参数是标致位,用于控制正则表达式的匹配方式如:是否区分大小写,多行匹配等等。
finditer()函数和findall()函数的区别是,findall()返回所有匹配的字符串,并存为1个列表,而finditer()则并不直接返回这些字符串,而是返回一个迭代器。
finditer()返回了一个可调用的对象,使用for i in finditer()的形式,可以一个一个的得到匹配返回的Match对象。这在对每次返回的对象进行比较复杂的操作时比较有用。