当前位置:嗨网首页>书籍在线阅读

16-字符分类

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.6 字符分类

在前面电话号码正则表达式的例子中, \d 可以代表任何数字。也就是说, \d 是正则表达式 (0|1|2|3|4|5|6|7|8|9) 的缩写。有许多这样的“缩写字符分类”,如表7-1所示。

表7-1 常用字符分类的缩写代码

| 缩写字符分类 | 表示 | | :----- | :----- | :----- | :----- | | \d | 0~9的任何数字 | | \D | 除0~9的数字以外的任何字符 | | \w | 任何字母、数字或下划线字符(可以认为是匹配“单词”字符) | | \W | 除字母、数字和下划线以外的任何字符 | | \s | 空格、制表符或换行符(可以认为是匹配“空白”字符) | | \S | 除空格、制表符和换行符以外的任何字符 |

字符分类对于缩短正则表达式很有用。字符分类 [0-5] 只匹配数字0~5,这比输入 (0|1|2|3|4|5) 要短很多。请注意,虽然 \d 匹配数字,而 \w 匹配数字、字母和下划线,但是没有速记字符类仅匹配字母。(你可以使用 [a-zA-Z] 字符类匹配字母。)

例如,在交互式环境中输入以下代码:

>>> xmasRegex = re.compile(r'\d+\s\w+')
>>> xmasRegex.findall('12 drummers, 11 pipers, 10 lords, 9 ladies, 8 maids, 7
swans, 6 geese, 5 rings, 4 birds, 3 hens, 2 doves, 1 partridge')
['12 drummers', '11 pipers', '10 lords', '9 ladies', '8 maids', '7 swans', '6
geese', '5 rings', '4 birds', '3 hens', '2 doves', '1 partridge']

正则表达式 \d+\s\w+ 匹配的文本有一个或多个数字 (\d+) ,然后是一个空白字符 (\s) ,接下来是一个或多个字母/数字/下划线字符 (\w+)findall() 方法将返回所有匹配该正则表达式的字符串,并将其放在一个列表中。