気になったので教えていただきたいです
フォーマット済み文字リテラルでよくfを使用しますが、
下記のrはなんでしょうか?
該当のソースコード
python3
1if not re.search(r'^[0-9,]+$', value)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/14 12:16
回答3件
0
ベストアンサー
raw 文字列は、独自にバックスラッシュの処理をしようとするプロセッサ (主に正規表現エンジン) への入力を生成しやすいように設計されたものです*1。
他の方がすでに案内されているドキュメントと併せて、次のドキュメントも読まれるとよいでしょう。
- Python ドキュメント » Python HOWTO » 正規表現 HOWTO » 文字のマッチング
- Python ドキュメント » Python HOWTO » 正規表現 HOWTO » バックスラッシュ感染症
- Python ドキュメント » Python 標準ライブラリ » テキスト処理サービス » re --- 正規表現操作 » Raw 文字列記法
- Python ドキュメント » Python よくある質問 » なぜ raw 文字列 (r-strings) はバックスラッシュで終わってはいけないのですか?
Raw 文字列は、文字列リテラル一般における「バックスラッシュ」の機能(他のアルファベットや数字と組み合わされることによりエスケープシーケンスを構成する機能)を無効化するためのものです。
正規表現では検索パターンを文字列リテラルを使って表します。正規表現では [], +, $ などの特殊文字に加えて、バックスラッシュも特殊文字として検索パターン内で使用します。
[], +, $ などの特殊文字は、通常の文字列リテラルにおいては特殊文字ではなく、正規表現の処理過程においてのみ特殊文字として扱われます。しかしバックスラッシュは、文字列リテラルにおいても、正規表現の処理過程においても、特殊文字として扱われます。
正規表現パターンに含まれるバックスラッシュは、正規表現エンジンに渡される前に、Pythonによってエスケープシーケンスとして認識され、その後に正規表現エンジンによって正規表現パターンにおける特殊文字として認識されるという、二重の過程を経ます。
この二重の過程に対処するために、バックスラッシュが含まれる正規表現は、連続するバックスラッシュを含む複雑なものになるなど、理解しにくくなることがあります(常にそうなるわけではありません)。
この問題を軽減するために導入されたのが、Raw 文字列です。正規表現パターンに Raw 文字列を使うと、文字列リテラル一般におけるバックスラッシュの働きに頭を煩わせることなく、正規表現エンジンにおけるバックスラッシュの扱いのみに集中することができます。
(追記:別の言い方をすれば、正規表現パターンにバックスラッシュを含んでいなければ、Raw 文字列であろうと普通の文字列であろうと、どちらでもいっしょ、ということでもあります。)
以下は公式ドキュメントからの引用です。
正規表現では、特殊な形式を表すためや、特殊文字をその特殊な意味を発動させず使うために、バックスラッシュ文字 ('') を使います。こうしたバックスラッシュの使い方は、 Python の文字列リテラルにおける同じ文字の使い方と衝突します。例えば、リテラルのバックスラッシュにマッチさせるには、パターン文字列として '\' と書かなければなりません。なぜなら、正規表現は \ でなければならないうえ、それぞれのバックスラッシュは標準の Python 文字列リテラルで \ と表現せねばならないからです。 (後略)
これを解決するには、正規表現パターンに Python の raw 文字列記法を使います。 'r' を前置した文字列リテラル内ではバックスラッシュが特別扱いされません。従って "\n" が改行一文字からなる文字列であるのに対して、 r"\n" は '' と 'n' の二文字からなる文字列です。通常、 Python コード中では、パターンをこの raw 文字列記法を使って表現します。
投稿2021/09/15 03:47
編集2021/09/17 10:15総合スコア1195
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/16 01:12
2021/09/17 02:59
2021/09/21 13:02
0
2.4 リテラル — Python 3.9.4 ドキュメント
に説明があります。
投稿2021/09/14 11:42
総合スコア85901
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。