2012-03-04 11 views
1

Pythonのマッチパターンでは、逆参照の後に1のようなリテラルの数字を\1のように一致させるにはどうすればよいですか?python re.matchグループ:数字の後ろの数字

この目的で置換パターンで利用できる構文を試しましたが、一致パターンでは機能しません。\g<1>

次のやや珍しいタスクを実行する関数を使用して解決したいという大きな問題があります。タスクは、パターンを動的に構築して、各パターンが特定の位置の繰り返し数字と残りの位置の特定の数字を持つ数字シーケンスと一致するようにすることです。

答えて

2

私は\g<1>の構文が必要でないことに気付きました。代わりに、いくつかのテクニックの1つを使用して、\2のような数字の逆参照を、それに続く数字9のように区切ります。ここでは3つのそのような技術は、以下のとおりです。

  • 非キャプチャグループ(?:\2)9
  • 後方参照を次の唯一の数字を含むようにそうでない場合は、不要な文字クラスを使用して1 \2{1}9
  • によってそれ以外の不要な定量\2[9]
+0

+1 {1}の有効な使用を見つけるために+1!混乱に加えて、いくつかの正規表現のフレーバーは、ほとんどの場合、そのような回避策を必要としませんでした。捕捉グループが2つまたは3つしかない場合、「\ 29」はグループ#2の後にリテラル「9」が続く逆参照として解釈されます。それがPythonに当てはまるのであれば、わかりません。どんなテクニックを使っても、あなたはそれをコメントすることをお勧めします。 –

2

文字クラス\1[1]またはそのグループ\1(1)に文字通り一致させる数字を入れて、かっこまたはp背景から桁を分離します。

+0

投票権はありませんが、グループ化されていないグループとしては「\ 1(?:1)」の方が良いでしょう。 – EOL

関連する問題