1

変数の値に基づいて正規表現検索を行いたいと思います。

Py2.x では、これは非常にうまく機能します。

pattern = re.compile(r"\b[a-zA-Z]{%(min_length)d,}\b" % locals())

それを新しい str.format() 表記に移植しようとすると、次のようになります。

pattern = re.compile(r"\b[a-zA-Z]{{0},}\b".format(min_length))

これにより、繰り返しの中括弧が str.format() のものと混同されるため、エラーが発生します。

ValueError: Single '}' encountered in format string

format() が繰り返しと衝突するこのような例をもっと思いつくことができると確信しています。

str.format()を介して正規表現の繰り返しに外部値を供給する正しい方法は何ですか? % 演算子は Py3 では機能しません。

4

1 に答える 1

6

古いバージョンをそのまま使用して%ください。文字列の書式設定は Python 3.x でもサポートされており、なくなることはありません。新しい構文を使用することを主張する場合は、フィールドを示していない中かっこを二重にします。

pattern = re.compile(r"\b[a-zA-Z]{{{0},}}\b".format(min_length))
于 2012-07-01T22:00:43.323 に答える