編集:問題は実際にprint
はリストと文字列でどのように機能するかです。文字列自体ではなく、文字列の表現を出力します。バックスラッシュのみを含む文字列の表現はです'\\'
。したがってfindall
、実際には単一の円記号を正しく検出しprint
ていますが、期待どおりに印刷されていません。試す:
>>> print(re.findall(r'\\',"i am \\nit")[0])
\
(以下は私の最初の答えです。無視できます(まったく関係ありません)。最初は質問を誤解していました。しかし、少し賛成されたようですので、ここに残しておきます。)
文字列のr
プレフィックスは、文字列が「生」モードにあること、つまり\
特殊文字として扱われないことを意味します(「正規表現」とは何の関係もありません)。
ただし、r'\'
バックスラッシュで生の文字列を終了することはできないため、機能しません。ドキュメントに記載されています。
生の文字列であっても、文字列の引用符は円記号でエスケープできますが、円記号は文字列に残ります。たとえば、r "\" "は、バックスラッシュと二重引用符の2文字で構成される有効な文字列リテラルです。r" \ "は有効な文字列リテラルではありません(生の文字列でさえ、奇数のバックスラッシュで終了することはできません)。具体的には、生の文字列を単一のバックスラッシュで終了することはできません(バックスラッシュは次の引用文字をエスケープするため)。
ただし、実際には、生でない文字列を使用して単一の円記号を取得できます"\\"
。