python-第三章 贪婪匹配 非贪婪匹配

一、

如果问号紧跟在任何使用闭合操作符的匹配后面,它将直接要求正则表 达式引擎匹配尽可能少的次数。

“尽可能少的次数”是什么意思?当模式匹配使用分组操作符时,正则表达式引擎将试图 “吸收”匹配该模式的尽可能多的字符。

这通常被叫做贪婪匹配。问号要求正则表达式引擎去 “偷懒”,如果可能,就在当前的正则表达式中尽可能少地匹配字符,留下尽可能多的字符给 后面的模式(如果存在)

正则表达式模式 匹配的字符串
[dn]ot?  字母“d”或者“n”,后面跟着一个“o”,然后是最多一个“t”,例如,do、no、dot、not
0?[1-9]  任何数值数字,它可能前置一个“0”,例如,匹配一系列数(表示从 1~9 月的数值),不 管是一个还是两个数字
[0-9]{15,16}  匹配 15 或者 16 个数字(例如信用卡号码)
]+> 匹配全部有效的(和无效的)HTML 标签
[KQRBNP][a-h][1-8]-[a-h][1-8]  在“长代数”标记法中,表示国际象棋合法的棋盘移动(仅移动,不包括吃子和将军)。
 即“K”、“Q”、“R”、“B”、“N”或“P”等字母后面加上“a1”~“h8”之间的棋盘坐标。 前面的坐标表示从哪里开始走棋,
后面的坐标代表走到哪个位置(棋格)上

 

二、表示字符集的特殊字符

与使用“0-9”这个范围表示十进制数相比, 可以简单地使用 d 表示匹配任何十进制数字。

另一个特殊字符(\w)能够用于表示全部字母 数字的字符集,相当于[A-Za-z0-9_]的缩写形式,

\s 可以用来表示空格字符。

这些特殊字符的 大写版本表示不匹配;例如,\D 表示任何非十进制数(与[^0-9]相同),等等。 使用这些缩写,可以表示如下一些更复杂的示例。

使用这些缩写,可以表示如下一些更复杂的示例。

\w+-\d+  一个由字母数字组成的字符串
和一串由一个连字符分隔的数字
[A-Za-z]\w*  第一个字符是字母;其余字符(
如果存在)可以是字母或者数字
\d{3}-\d{3}-\d{4}  美国电话号码的格式,前面是区
号前缀,例如 800-555-1212
\w+@\w+\.com  以 [email protected] 格式表示的
简单电子邮件地址

你可能感兴趣的:(Python)