CG・プログラミング・AIとかについてのメモ

正規表現かべうち【第10問】正しいHTMLタグ構造にマッチする

はじめに

正規表現を覚えるために、AIに問題を出させてひたすら解きまくる壁打ち練習をしています。ここにその記録を綴っていきます。

正規表現かべうちのルール

  • 回答の正誤判定は regex101 でおこなう。特に指定がない場合は Pythonフレーバー 、オプションは g(global) ・ m(multi-line) ・ u(unicode) を使用。
  • AIの挙げたサンプルテキスト内で条件通りにマッチできればOKとする。余力があれば例外処理を付け加えても可。
  • 文字列の並び方について言及する場合、前後左右や手前などの言い方をせず、先読みの方向を 「先方向」 、後読みの方向を 「後方向」 と表記する。

【第10問】

マッチさせたい条件

英小文字からなる開きタグ(例: <div>)と閉じタグ(例: </div>)で囲まれた タグ構造の全体 にマッチさせてください。ただし、開きタグ と 閉じタグ のタグ名が完全に一致しており、かつタグとタグの間に1文字以上の内容( < や > を含まない文字列)が存在するもののみにマッチさせてください。

マッチング検証用テキスト

<div>hello</div>
<span>world</span>
<div>mismatch</span>
<p>test</p>
<h1
<h2>broken</h2>
<a></a>

マッチ結果の文字列

<div>hello</div>
<span>world</span>
<p>test</p>
<h2>broken</h2>

私の回答

<([a-z0-9]+>)[^<>]+<\/\1
20261002_102926-1.jpg

regex101: build, test, and debug regex

おわりに

このシリーズは 正規表現かべうち タグでまとめています。