正規表現 Part11

このエントリーをはてなブックマークに追加
17デフォルトの名無しさん
●問題文
<b>タグのように開始タグの部分にマッチする正規表現を最小限の階数のキャプチャを用いて書きなさい。
タグ名は1文字以上の英単語であり、属性には「>」以外の任意の文字を使えるものとする。
●例文
<b>ゴレイヌさん</b>は、えげつねぇ・・・<font color="red">ゴレイヌさん</font>は
えげつねぇ。。。<font color="blue">富樫仕事</font>しろ。
●マッチする例
<b>
<font color="red">
<font color="blue">

●答え
<(?:\w+)(?:\s+[^>]*)*>
●解説
「<」と「>」に囲まれた部分にマッチさせればよいのですが、属性付きのタグを考慮しなくてはいけません。
また、最小限のキャプチャという条件があるため、グループ化のみでキャプチャを必要としない場所では「(?:)」を使います。
この問題の場合には、1回もキャプチャを使わずに記述する事が可能です。

と、あるのですが
<\w+(?:\s+[^>]*)*>
でないかと思っています。
\w+はグループ化する必要がそもそもあるのでしょうか?