1

答えを見つけるためにたくさんの質問を読んでいますが、見逃していたらごめんなさい。

改行文字のみを含むテキストがあるとしましょう。
text ='\n'

正規表現はバックスラッシュ文字 ('\') を使用して Python のような特別な意味の文字をエスケープするため、この回答が示唆するように生の文字列表記を使用して改行文字を一致させます。(間違っていたら訂正してください)

したがってregex = re.compile(r'\n')、正規表現パーサーはバックスラッシュと文字「n」を読み取り、改行文字として解釈できます。

私の質問は、なぜregex = re.compile('\n')も機能するのですか?

私がやろうとしregex.match(text)た結果は<_sre.SRE_Match object; span=(0, 1), match='\n'>、生の文字列表記と同じです。


ここに書かれている文書のせいでしょうか?それは言う:

Python 文字列リテラルでサポートされている標準エスケープのほとんどは、正規表現パーサーでも受け入れられます: \a \b \f \n \r \t \v \x \\

誰か詳しく説明してくれませんか?

4

1 に答える 1

1

は、文字列リテラルのr'\n'解釈を抑制します。このように、 と の 2 つの文字が含まれ'\'ます'n'。2 つの文字は、正規表現エンジンによって改行シーケンスとして解釈されます。2 番目のケースでは、'\n'最初に改行シーケンスに変換されます (Unix ベースのシステムでは LF、つまり 1 文字です。Windows では CR LF、つまり 2 文字です...)。正規表現コンパイラは、明示的に指定された文字として受け取ります (バックスラッシュや特別な解釈はありません)。

于 2016-06-18T19:27:42.280 に答える