へのメソッド引数として複数行にわたる正規表現を構築する際に使用されるのを最初に見たので、は RegEx を表してre.compile()
いると想定しました。r
例えば:
regex = re.compile(
r'^[A-Z]'
r'[A-Z0-9-]'
r'[A-Z]$', re.IGNORECASE
)
ではr
、この場合はどういう意味ですか?なぜそれが必要なのですか?
はr
、文字列が生の文字列として扱われることを意味します。これは、すべてのエスケープ コードが無視されることを意味します。
例:
'\n'
は改行文字として扱われ、 はその後に続くr'\n'
文字として扱われます。\
n
'r'
またはプレフィックスが存在する場合'R'
、バックスラッシュに続く文字はそのまま文字列に含まれ、バックスラッシュはすべて文字列に残されます。たとえば、文字列リテラルr"\n"
は、バックスラッシュと小文字の 2 つの文字で構成されます'n'
。文字列の引用符はバックスラッシュでエスケープできますが、バックスラッシュは文字列に残ります。たとえば、r"\""
バックスラッシュと二重引用符の 2 文字で構成される有効な文字列リテラルです。r"\"
は有効な文字列リテラルではありません (生の文字列であっても、奇数のバックスラッシュで終わることはできません)。具体的には、生の文字列を単一のバックスラッシュで終了することはできません (バックスラッシュは次の引用文字をエスケープするため)。また、単一のバックスラッシュとそれに続く改行は、行の継続としてではなく、文字列の一部としてこれら 2 つの文字として解釈されることに注意してください。
ソース: Python 文字列リテラル
これは、エスケープが翻訳されないことを意味します。例えば:
r'\n'
バックスラッシュの後に文字が続く文字列n
です。( がなければr
、改行になります。)
b
はバイト文字列を表し、デフォルトで文字列が Unicode である Python 3 で使用されます。Python 2.x では、文字列はデフォルトでバイト文字列であり、u
Unicode を示すために使用していました。