如何在反向引用上应用函数?
How to apply a function on a backreference?
假设我有如下字符串:
old_string = "I love the number 3 so much"
我想找出整数(在上面的例子中,只有一个数字,3
),并用一个大1的值替换它们,即期望的结果应该是
new_string = "I love the number 4 so much"
在Python中,我可以使用:
r = re.compile(r'([0-9])+')
new_string = r.sub(r'', s)
在匹配的整数末尾附加一个9
。但是,我想在
上应用一些更通用的东西。
如果我定义一个函数:
def f(i):
return i + 1
如何在
上应用 f()
,以便我可以将 old_string
中匹配的字符串替换为 f()
?
除了替换字符串外,re.sub
还允许您使用函数进行替换:
>>> import re
>>> old_string = "I love the number 3 so much"
>>> def f(match):
... return str(int(match.group(1)) + 1)
...
>>> re.sub('([0-9])+', f, old_string)
'I love the number 4 so much'
>>>
来自docs:
re.sub(pattern, repl, string, count=0, flags=0)
If repl
is a function, it is called for every non-overlapping
occurrence of pattern
. The function takes a single match object
argument, and returns the replacement string.
假设我有如下字符串:
old_string = "I love the number 3 so much"
我想找出整数(在上面的例子中,只有一个数字,3
),并用一个大1的值替换它们,即期望的结果应该是
new_string = "I love the number 4 so much"
在Python中,我可以使用:
r = re.compile(r'([0-9])+')
new_string = r.sub(r'', s)
在匹配的整数末尾附加一个9
。但是,我想在 上应用一些更通用的东西。
如果我定义一个函数:
def f(i):
return i + 1
如何在 上应用
f()
,以便我可以将 old_string
中匹配的字符串替换为 f()
?
除了替换字符串外,re.sub
还允许您使用函数进行替换:
>>> import re
>>> old_string = "I love the number 3 so much"
>>> def f(match):
... return str(int(match.group(1)) + 1)
...
>>> re.sub('([0-9])+', f, old_string)
'I love the number 4 so much'
>>>
来自docs:
re.sub(pattern, repl, string, count=0, flags=0)
If
repl
is a function, it is called for every non-overlapping occurrence ofpattern
. The function takes a single match object argument, and returns the replacement string.