ホームページ  >  記事  >  バックエンド開発  >  Python の正規表現に r 接頭辞が必ずしも必要ではないのはなぜですか?

Python の正規表現に r 接頭辞が必ずしも必要ではないのはなぜですか?

DDD
DDDオリジナル
2024-10-19 17:08:30376ブラウズ

Why is an r prefix not always required for regex in Python?

Python 正規表現 - r 接頭辞

次の正規表現は、r 接頭辞がなくても機能するのはなぜか疑問に思う人もいるかもしれません:

<code class="python">import re
print (re.sub('\s+', ' ', 'hello     there      there'))</code>

一般的にはエスケープ シーケンスを使用する場合は常に r プレフィックスが必要であると考えられていましたが、この例はそれと矛盾しているようです。

エスケープ シーケンスと生の文字列

r プレフィックスは、「生の文字列」を作成するために使用されます。これは、文字列内のエスケープ シーケンスが特殊文字として解釈されないことを意味します。これは、バックスラッシュ () など、通常はエスケープ シーケンスとして解釈される文字を使用する場合に便利です。

上記の例では、エスケープ シーケンス s は 1 つ以上の空白と一致するために使用されます。文字。 r 接頭辞がないと、このエスケープ シーケンスはタブ文字 (t) として解釈されます。ただし、r プレフィックスが使用されているため、エスケープ シーケンスは文字通りに解釈され、1 つ以上の空白文字と一致します。

ルールの例外

エスケープ シーケンスというルールにはいくつかの例外があります。 r 接頭辞を付けて使用する必要があります。 1 つの例外は、改行文字を表すために使用される n エスケープ シーケンスです。次の例に示すように、このエスケープ シーケンスは r プレフィックスなしで使用できます。

<code class="python">print '\n'</code>

もう 1 つの例外は、バックスラッシュ文字を表すために使用される \ エスケープ シーケンスです。次の例に示すように、このエスケープ シーケンスは r プレフィックスなしで使用することもできます。

<code class="python">print '\'</code>

結論

Python でエスケープ シーケンスを使用する場合、r プレフィックスは必ずしも必要ではありません。ただし、混乱や予期しない動作を避けるために、一般的には r 接頭辞を使用することをお勧めします。

以上がPython の正規表現に r 接頭辞が必ずしも必要ではないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。