文字列をある文字列を切れ目として分割するには、split() が使えます。
split(s, h, r): 文字列 を、正規表現 を区切りとして区切って 配列 に保存し、その個数を返すこれで、例えば
<li>(あ)<br><li>(い)<br><li>(う)<br><br>という文字列 str を
N=split(str,h,/<br>/)とすると、 と配列 の内容は以下のようになります:
N=5, h[1]="(あ)", h[2]="(い)", h[3]="(う)", h[4]="", h[5]=""最後の 2 つにゴミが残っていますが、それは文字列の最後に <br> が ついていることによります。 よって、それを削除してから split() にかけるといいでしょう。 同様に、
<li>(あ)<br><li>(い)<br><li>(う)<br></ul>という文字列を同じように split() にかけると
N=4, h[1]="(あ)", h[2]="(い)", h[3]="(う)", h[4]="</ul>"のようになりますので、この場合も最後の <br> と </ul> を 削除してから split() にかけます。よって、
sub(/<br>(<br>|<\/ul>)? *$/,"",str) N=split(str,h,/<br>/)のようにすればいいでしょう。この最初の sub() に与えている正規表現は、
を意味しています。(<br>|<\/ul>)
= <br> または </ul>
(<br>|<\/ul>)?
= (<br> または </ul>) の 0 回かまたは 1 回
<br>(<br>|<\/ul>)?
= <br> か <br><br> か <br></ul>
<br>(<br>|<\/ul>)? *$
= そのいずれかにスペースが 0 個以上ついて行末