次の正規表現は、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 サイトの他の関連記事を参照してください。