我有一个字符串说“Alex 28”。现在,我想提取数字 28 并使用正则表达式将其加 2。
在 Perl 中,我可以这样得到它:
#!/usr/bin/perl
use strict;
use warnings;
my $str='Alex 28';
$str=~s/(\d+)/$1+2/e;
Run Code Online (Sandbox Code Playgroud)
为了在 Python 中实现这一点,我尝试了以下方法:
#!/usr/bin/python
import re
str = 'Alex 28'
match=re.sub(r'(\d+)',r'\g<1>',str)
Run Code Online (Sandbox Code Playgroud)
如何将 2 添加到\g<1>已获取的 ' ' 上?我尝试使用 int 函数,它不起作用。请帮忙。
版本:Python 2.7.3
如果 repl 是一个函数,则每次不重叠出现模式时都会调用它。该函数采用单个匹配对象参数,并返回替换字符串。
例如:
def add_two(match):
return str(int(match.group()) + 2)
s = 'Alex 28'
re.sub(r'(\d+)', add_two, s)
Run Code Online (Sandbox Code Playgroud)
或者,使用 lambda:
re.sub(r'(\d+)', lambda m: str(int(m.group()) + 2), s)
Run Code Online (Sandbox Code Playgroud)
请注意:
str变量名是一个糟糕的选择,因为它会覆盖内置变量strrepl应返回一个字符串match.group()它返回整个匹配:如果正则表达式定义多个组,您可能需要指定组索引。| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |