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

17-建立自己的字符分类

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

7.7 建立自己的字符分类

有时候你想匹配一组字符,但缩写的字符分类( \d\w\s 等)太宽泛。这时候你可以用方括号定义自己的字符分类。例如,字符分类 [aeiouAEIOU] 将匹配所有元音字符,且不区分大小写。在交互式环境中输入以下代码:

>>> vowelRegex = re.compile(r'[aeiouAEIOU]')
>>> vowelRegex.findall('RoboCop eats baby food. BABY FOOD.')
['o', 'o', 'o', 'e', 'a', 'a', 'o', 'o', 'A', 'O', 'O']

也可以使用短横线表示字母或数字的范围。例如,字符分类 [a-zA-Z0-9] 将匹配所有小写字母、大写字母和数字。

请注意,在方括号内,普通的正则表达式符号不会被解释。这意味着你不需要在前面加上倒斜杠转义.、 *?() 字符。例如,字符分类将匹配数字0~5和一个句点,你不需要将它写成 [0-5\.]

在字符分类的左方括号后加上一个插入字符( ^ ),就可以得到“非字符类”。非字符类将匹配不在这个字符类中的所有字符。例如,在交互式环境中输入以下代码:

>>> consonantRegex = re.compile(r'[^aeiouAEIOU]')
>>> consonantRegex.findall('RoboCop eats baby food. BABY FOOD.')
['R', 'b', 'c', 'p', ' ', 't', 's', ' ', 'b', 'b', 'y', ' ', 'f', 'd', '.', '
', 'B', 'B', 'Y', ' ', 'F', 'D', '.']

现在,程序不是匹配所有元音字符,而是匹配所有非元音字符。