1

「Alex28」という文字列があります。ここで、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

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)

または、ラムダを使用して:

re.sub(r'(\d+)', lambda m: str(int(m.group()) + 2), s)

その点に注意してください:

  • str組み込みをオーバーライドするため、変数名として使用するのは悪い選択です。str
  • 置換は文字列のみで機能するため、repl引数として渡される関数は文字列を返す必要があります
  • 一致全体を返すものを使用match.group()しました。正規表現が複数のグループを定義している場合は、グループ インデックスを指定する必要がある場合があります。
于 2013-03-15T08:59:00.440 に答える