質問: "hogefugafuga" p.sub("", tag_str) # Return hogefugafuga ``` ここで使われている正規表現「<[^>]*?>」が理解できません。 どのようにしてを認識しているのでしょうか。 教えていただければと思います。
回答: 正規表現を図示できるサイトがあります。 !実際の画面 Debuggex 実際ややこしいのは `[^>]*?` の部分だけで、これは次のように読みます。 * `>`以外の任意の文字を (`[^>]`) * 0回以上、できるだけ短くマッチ (`*?`) `*?`や`+?`は**最短マッチ**だとか**最左最短マッチ**だとか**非貪欲マッチ**だとか呼ばれるものです。 Pythonのドキュメントには次のようにあります。 > > ##### *?, +?, ?? > > > '*' 、 '+' 、 '?' といった修飾子は、すべて 貪欲 (greedy) マッチ、すなわちできるだけ多くのテキストにマッチするようになっています。時にはこの動作が望ましくない場合もあります。例えば正規表現 <.*> を ' b ' にマッチさせると、 '' だけにマッチするのではなく全文字列にマッチしてしまいます。 ? を修飾子の後に追加すると、 非貪欲 (non-greedy) あるいは 最小一致 (minimal) のマッチになり、できるだけ 少ない 文字数のマッチになります。例えば正規表現 <.*?> を使うと '' だけにマッチします。 > > > 引用元: Python 標準ライブラリ » re — 正規表現操作 同じような例が挙げられていますね。