はじめに
HTML の要素には class="main m list" のように、複数のクラスが空白区切りで指定されることがよくあります。
このとき「m というクラスが含まれている要素」を正規表現で検索したい場合、単純に class=".*m.*" と書くと 部分一致の誤検出 が起きる可能性があります(例: class="main" もマッチしてしまう)。
そこで活用できるのが、次の正規表現です。
| |
正規表現の分解
1. class\s*=\s*
class= を探す部分です。= の前後にスペースが入っている場合も考慮して \s* を入れています。
2. ["']
class 属性の値は " か ' で囲まれているため、両方に対応します。
3. [^"']*
引用符の中に含まれる文字列を「一旦すべて」許可します。
ただし、閉じカッコの " や ' が来るまで。
4. \bm\b
ここがポイントです。\b は「単語境界」を意味し、前後が空白や記号で区切られていることを保証します。
そのため、class="main" にはマッチせず、class="m" や class="main m list" にだけマッチします。
5. [^"']*["']
再び残りの文字列を許可し、最後に引用符で閉じられていることを確認します。
実際の動作例
| |
まとめ
この正規表現を使えば、class 属性に複数クラスが指定されている中から、特定のクラス名(例: m)だけを 誤検出せずに検索 できます。
汎用的に使いたい場合は、\bm\b の部分を他のクラス名に置き換えれば OK です。
| |
これで HTML コードの検索やテストで「特定のクラスを含む要素」を効率よく見つけることができます。
スポンサーリンク