说说 Python 正则表达式中的那些字符类别码

字符类别码 说明
\d 0 到 9 之间的任意数字,d 是 digit 的缩写。
\D 0 到 9 的数字以外的任意字符。
\w 任意字母、数字或下划线字符,w 是 word 的缩写。
\W 字母、数字和下划线以外的任意字符。
\s 空格、制表符或换行符,s 是 space 的缩写。
\S 空格、制表符和换行符以外的任意字符。

比如 \d 就是正则表达式 (0|1|2|3|4|5|6|7|8|9) 的缩写,使用它可以大大缩短正则表达式的长度。

data_regex=re.compile(r'\d+\.\s[\u4E00-\u9FA5]+')
print(data_regex.findall('1. 科技:xxx,2. 娱乐:xxx,3. 体育:xxx'))

运行结果:

[‘1. 科技’, ‘2. 娱乐’, ‘3. 体育’]

正则表达式 \d+\.\s[\u4E00-\u9FA5]+中的 \d+ 表示一个或多个 0 到 9 之间的任意数字;接着是一个 . ,因为这个点是特殊字符,所以在之前加了转义符;然后是 \s 表示空格、制表符或换行符;最后是 [\u4E00-\u9FA5]+ 表示一个或多个中文字符。

也可以使用方括号来自定义字符集。例如, 下例中的字符集 [1x] 将匹配所有的 1 与 x:

custom_regex=re.compile(r'[1x]')
print(custom_regex.findall('1. 科技:xxx,2. 娱乐:xxx,3. 体育:xxx'))

注意: 在方括号内的普通正则表达式符号(比如 .、*、? 或 () 字符)不会被解释。因此,我们不需要对其进行转义。

在自定义字符集的左边中括号之后加一个插入字符( ^), 就可以得到相反结果,即不是自定义字符集中的字符,会被匹配出来:

custom_regex=re.compile(r'[^1x]')
print(custom_regex.findall('1. 科技:xxx,2. 娱乐:xxx,3. 体育:xxx'))

运行结果:

[’.’, ’ ', ‘科’, ‘技’, ‘:’, ‘,’, ‘2’, ‘.’, ’ ', ‘娱’, ‘乐’, ‘:’, ‘,’, ‘3’, ‘.’, ’ ', ‘体’, ‘育’, ‘:’]

发布了601 篇原创文章 · 获赞 668 · 访问量 88万+

猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/103541122