1

我有一个字符串说'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)

如何将 2 添加到\g<1>已获取的“”中?我尝试使用 int 函数,它不起作用。请帮忙。

版本:Python 2.7.3

4

1 回答 1

4

您可以re.sub通过repl参数提供函数来使用:

如果 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()它返回整个匹配:如果正则表达式定义多个组,您可能需要指定组索引。
于 2013-03-15T08:59:00.440 回答