在Python中使用正则
这篇文章假定你已经熟知了正则的基础规则。
re
Python中有一个正则相关的模块,re
.
你只需要引入该模块即可。
1 | import re |
re.findall()
re.findall(pattern, string, flags=0)
返回所有匹配的字符串列表。
1 | print(re.findall(r'\d+', 'Hello 12 hi 89. Howdy 34')) |
如果包含group呢?
1 | print(re.findall(r'Hello\s*(\d+)', 'Hello 12 hi 89. Howdy 34')) |
如果包含多个group呢?
1 | print(re.findall(r'Hello\s(\d+)\shi\s(\d+)', 'Hello 12 hi 89. Howdy 34')) |
re.split()
re.split(pattern, string, maxsplit=0, flags=0)
分割字符串,返回分割出来的列表。
1 | print(re.split(r'\s+', 'Vue is a progressive framework for building user interfaces.')) |
如果没有匹配呢?
1 | print(re.split(r'\d+', 'Vue is a progressive framework for building user interfaces.')) |
不区分大小写
1 | print(re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)) |
re.sub()
re.sub(pattern, replace, string, count=0, flags=0)
返回用replace
替换pattern
匹配的字符串。
1 | print(re.sub(r'\s+', '', 'abc 12 \n r \t')) |
如果没有匹配,将返回原字符串
1 | print(re.sub(r'\d+', '', 'abc de')) |
只替换前2个
1 | print(re.sub(r'\s+', '', 'abc de f g', count=2)) |
使用re.subn()
会返回替换后的字符串和替换的个数。
1 | print(re.subn(r'\s+', '', 'abc de f g')) |
一个稍微复杂一点的例子,将/users/{a1}/code/{b1}/ff
字符串中大括号包裹的部分替换为大括号中的内容再加一个后缀suffix
1 | re.sub(r'\{(.*?)\}', r'\1suffix', r'/users/{a1}/code/{b1}/ff') |
re.search()
re.search(pattern, string, flags=0)
扫描字符串以查找正则匹配的第一个位置,然后返回相应的匹配对象。 如果没有匹配返回None。
1 | print(re.match(r'\d+', 'abc12de345')) |