6

私はPythonを初めて使用します。実際、これは私の最初のスクリプトです。

Pythonの正規表現に苦労しています。具体的にはre.sub()

次のコードがあります。

variableTest = "192"
test = re.sub(r'(\$\{\d{1,2}\:)example.com(\})', r'\1' + variableTest + r'\2', searchString, re.M )

これで、私は内側のようなものを一致させ、サーバー名またはIPアドレスに置き換えようとしhost": "${9:example.com}"ていますsearchString.example.com

variableTestIP が含まれている場合、失敗します。次のエラーが表示されます。 sre_constants.error: invalid group reference

variableTest「127.0.0.1」、「1」、「192」、「192.168」に等しい値でテストしました。「127.0.0.1」は機能しますが、残りは機能しません。他の人に手紙を追加すると、それも機能します。

variableTest文字列です - で検証されますtype(variableTest)

これがなぜなのか、私は完全に迷っています。

r'\1'交換用の文字列を削除しても機能します。r'\1'1 から999${\d}:まで\dの数字が含まれます。

どんな助けでも大歓迎です!

4

2 に答える 2

8

問題は、IP を入力variableTestすると、次のような置換文字列になることです。

r'\18.8.8.8\2'

ご覧のとおり、最初のグループ参照はグループ 1 ではなく、グループ 18 です。したがって、re無効なグループ参照について不平を言います。

この場合、代わりに次の\g<n>構文を使用します。

r'\g<1>' + variableTest + r'\g<2>'

などを生成しr'\g<1>8.8.8.8\g<2>'ます。

于 2013-03-05T15:12:28.357 に答える
1

re.sub(パターン、repl、文字列、カウント=0、フラグ=0)

これは re.sub() の構文です

フラグ re.M を呼び出しているように見える方法は、flags=re.M のようにする必要があります。そうしないと、python は count=re.M を意味するかのように解釈します。

それは私が決めることができる唯一のことなので試してみてください

また、searchString変数に含まれる可能性のあるものの例を教えてください

于 2013-03-05T15:09:40.967 に答える