我有一个字符串'Alex 28'。现在,我想提取数字28并使用正则表达式将其加2。
在Perl中,我可以这样得到它:
#!/usr/bin/perl
use strict;
use warnings;
my $str='Alex 28';
$str=~s/(\d+)/$1+2/e;
为了在Python中实现这一点,我尝试了以下内容:
#!/usr/bin/python
import re
str = 'Alex 28'
match=re.sub(r'(\d+)',r'\g<1>',str)
如何在已提取的“\g<1>
”中添加2?我尝试使用int函数,它无法正常工作。请帮忙。
版本:Python 2.7.3
答案 0 :(得分:4)
您可以supplying a function to the repl
argument使用re.sub
:
如果repl是一个函数,则会针对每个非重叠的模式调用它。该函数接受一个匹配对象参数,并返回替换字符串。
例如:
def add_two(match):
return str(int(match.group()) + 2)
s = 'Alex 28'
re.sub(r'(\d+)', add_two, s)
或者,使用lambda:
re.sub(r'(\d+)', lambda m: str(int(m.group()) + 2), s)
请注意:
str
作为变量名是一个不错的选择,因为它会覆盖内置str
repl
参数传递的函数应返回一个字符串match.group()
返回整个匹配:如果正则表达式定义了多个组,则可能需要指定组索引。