[解決済み】名前付き正規表現グループ "(?P<group_name>regexp)": "P" とは何の略ですか?
質問
Pythonでは
(?P<group_name>…)
構文
は、マッチした文字列をその名前を通して参照することを可能にします。
>>> import re
>>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456')
>>> match.group('name')
'John'
P"Pは何の略ですか? の中にヒントが見つかりませんでした。 公式ドキュメント .
生徒にこの構文を覚えさせる方法について、ぜひアイデアを頂きたいのです。P"が何を表しているのか(あるいは表している可能性があるのか)を知ることは有用でしょう。
どのように解決するのですか?
せっかくなので、私なりの推測を。私はずっとPythonの略だと思っていました。 PはPythonの略か?-- と思われるかもしれませんが、私の防衛手段としては、なんとなく次のことを思い出しました。 このスレッド [強調)。
件名 主張する (?P...) 正規表現構文の拡張機能
From Guido van Rossum ([email protected])
日付 1997年12月10日 15時36分19秒
Perlの開発者(開発している人)に変わったお願いがあります。 Perl言語)。 ここ(perl5-porters)が正しいリストであることを祈ります。 I Pythonのstring-sigをccしているのは、Pythonのstring-sigがほとんどの元になっているからです。 ここで議論している仕事
Pythonはご存知の方も多いと思います。 私はPythonの生みの親です。 Python 1.5をリリースする予定です。 今年もよろしくお願いします。 PythonとPerlがこれから先も共存していけるようにと願っています。 両言語にとって、相互受粉は良いことです。 (私はラリーが Perl 5にオブジェクトを追加したとき、Pythonをよく見ていた; O'Reilly 両方の言語についての本を出版しています)。
ご存知のように、Python 1.5では、新しい正規表現モジュールが追加されました。 よりPerlの構文に近くなっています。 私たちは、Perlの構文にできるだけ近づけようとしました。 Pythonの構文の中で、Perlの構文を可能な限り使用します。 しかし、正規表現 の構文にはPython特有の拡張機能があり、それらはすべて(?P .)で始まっています。 現在、2つあります。
(?P<foo>...)
通常のグループ化括弧と似ていますが、テキストの
にマッチしたグループには、マッチが実行された後にアクセスできます。 シンボリックグループ名 "foo"を介して。
(?P=foo)
という名前のグループがマッチする文字列と同じ文字列にマッチします。 foo"です。 グループが参照されることを除いては、 \1, \2, などと同等です。
を番号ではなく、名前で指定する。このPython固有の拡張が、他のPythonの拡張と衝突しないことを望みます。 将来、Perlの正規表現構文が拡張される予定です。 もし を使用する場合は、できるだけ早くお知らせください。 の競合が発生します。 そうでなければ、(?P)構文が(?P)構文であることが望ましい。 は、Python 固有の構文拡張のために永久に予約されています。 (この 拡張機能のレジストリみたいなものがあるのでしょうか?)
という質問に対して、ラリー・ウォールが答えた。
[...] 今のところレジストリはありません。 perl5-portersの外部では、かなり低帯域の活動です。 (先週はもっと低くてすみません。私はニューヨークのInternetでオフでした。 ワールド)
とにかく、私の知る限りでは、あなたが'P'を持つことは間違いないでしょう。 の祝福を受ける。(明らかにPerlはこの時点で'P'を必要としていません。 :-) [...].
だから、Pが最初に選ばれた動機が何だったのかはわかりません -- パターン? プレースホルダー?-- でも、なぜ私がずっとPythonと結びつけてきたかはおわかりいただけると思います。 (1)私は正規表現が嫌いで、可能な限り避けていること、(2)このスレッドが15年前に起こったことを考えると、ちょっと奇妙な感じですね。
関連
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] 最初のマッチで停止する正規表現
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] 単語を含まない行にマッチする正規表現
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] 正規表現における非捕捉グループとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python関数の高度な応用を解説
-
PicgoのイメージベッドツールをPythonで実装する
-
python implement mysql add delete check change サンプルコード
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】NameError: 名前 'self' が定義されていません。