1. ホーム
  2. python

[解決済み] 文字列リテラルの前に "r "を付けるとどういう意味になりますか?重複

2022-04-26 13:58:51

質問

のメソッド引数として、複数行にまたがる正規表現を構築する際に使用されているのを初めて目にしました。 re.compile() と仮定しました。 r はRegExの略です。

例えば

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つの文字からなるリテラルです。 バックスラッシュとダブルクォートの2つの文字で構成されています。 r"\" は有効な文字列リテラルではありません(たとえ 生文字列は奇数で終わることはできません。 のバックスラッシュ)。具体的には、生の の文字列は、1つの バックスラッシュ(バックスラッシュは は次の引用文字をエスケープする)。 また,シングルバックスラッシュ と改行が続くと この2つの文字が の文字列を、行の続きとしてではなく、文字列として扱います。

出典 Python 文字列リテラル