0

私はpython 2.7を使用しています

正規表現のグループを値で変更しようとしています:

import re

r = "/foo/bar/(?P<pk>[0-9]+)/"
rc = re.compile(r)
#that i try to do : rc["pk"] = 42 and get the resut
print rc.groupindex
#return {'pk' : 1}

正規表現がわからないのでこれを行う必要がありますが、その中にグループがあることは知っています。

編集:

私はこのような結果を得たい:

rc["pk"] = 42
#now rc is /foo/bar/42 because (?P<pk>[0-9]+) is replace with 42
4

1 に答える 1

0

私は Python プログラマーではありませんが、他の多くのシステムで正規表現を頻繁に使用しています。re.sub次のように、グループへの後方参照を使用して関数を使用できると思います。

検索パターン:

'(/foo/bar/)[0-9]+(/)'

交換パターン:

'\g<1>42\g<2>'

これは置き換えます

'/foo/bar/17/'

'/foo/bar/42/'

これは、フォルダー名が式自体であっても機能します。

'(/\w+/\w+/)\d+(/)'

Python は、次のような lookaround ステートメントもサポートしています。

'(?<=/foo/bar/)\d+(?=/)'

次に、一致を に置き換えるだけです'42'。(ルックアラウンドは文字を「消費」しないため、 と のテキストは'((?<=...)'置き換え'(?=...)'られません。)

于 2013-02-01T17:26:42.980 に答える