跳转至

正则表达式

匹配需要的数据

1
2
3
4
5
6
7
8
import re

line = 'abc target ddd target2 d'
match_obj = re.match(r'abc (.*?) ddd (.*?) d', line, re.M|re.I)
if match_obj:
    print(match_obj.group())
    print(match_obj.group(1))
    print(match_obj.group(2))

将匹配到的内容传入函数

?P<name>

示例:

1
2
3
4
5
6
7
8
import re

def double(matched):
    value = int(matched.group('value'))
    return str(value * 2)

s = 'A23G4HFD567'
print(re.sub('(?P<value>\d+)', double, s))

re.sub('(?P<value>\d+)', <function_name>, <string>)中,(?P<value>\d+)的意思是命名一个名字为value的组,匹配规则符合后面的\d+,然后将匹配到的内容传入后面的<function_name>函数。

切分字符时保留分割字符

使用re.split时,对用于分割的正则表达式添加括号,可以保留分割字符。例如:

1
2
3
>>> line='abc,dag,dag'
>>> re.split(r'(,)', line)
['abc', ',', 'dag', ',', 'dag']

最后更新: 2022-06-08

评论