どうも、もりやま@Thinkです。自己レスです。

>  今、Perlで書かれたHTMLタグを除去するプログラムをRubyで書き直しているん
> ですが、、正規表現の修飾子 g の部分でうまく解決できなくて困っています。
> 
> ------------------------------------------------------------------
(snip)
>   if ($tag_tmp =~ /^<(XMP|PLAINTEXT|SCRIPT)(?![0-9A-Za-z])/i) {
>     $str =~ /(.*?)(?:<\/$1(?![0-9A-Za-z])$tag_regex_>|$)/gsi;
>     ($text_tmp = $1) =~ s/</&lt;/g;
>     $text_tmp =~ s/>/&gt;/g;
>     $result .= $text_tmp;
>   }
(snip)
> ------------------------------------------------------------------
(snip)
> > のですが,XMPタグ,PLAINTEXTタグ, SCRIPTタグのときだけは 別処理をする必
> > 要があります.その処理終了後 while 文に戻ったときには,その続きからパター
(snip)

 とりあえずXMP, PLAINTEXT, SCRIPTの部分を考えないようにして解決(逃げ?)
しました。

------------------------------------------------------------------

TAG_RE_        = %q{[^"'>]*(?:"[^"]*"[^"'>]*|'[^']*'[^"'>]*)*};
COMMENT_TAG_RE = '<!(?:--[^-]*(?:(?!--)-[^-]*)*--(?:(?!--)[^>])*)*(?:>|(?!\n)$|--.*$)';
TAG_RE         = COMMENT_TAG_RE + '|<' + TAG_RE_ + '>';
TEXT_RE        = %q{(?:[^<]|\r\n|\r|\n)*};

# 無効化用
def escapeTag(str, *tags)
  result = '';
  enable_tags = tags.join('|');
  while (/(#{TEXT_RE})(#{TAG_RE})?/po =~ str)
    if ((($1 == nil) or ($1 == '')) and (($2 == nil) or ($2 == ''))) then break; end
    str = $';
    result << $1;
    tag_tmp = $2;
    if (/^<\/?(#{enable_tags})(?![0-9A-Za-z])/i =~ tag_tmp) then
       result << tag_tmp;
      elsif (tag_tmp != nil) then
       result << (tag_tmp.gsub('<', '&lt;')).gsub('>', '&gt;');
    end
  end
  return result;
end

# 削除用
def deleteTag(str, *tags)
  result = '';
  enable_tags = tags.join('|');
  while (/(#{TEXT_RE})(#{TAG_RE})?/po =~ str)
    if ((($1 == nil) or ($1 == '')) and (($2 == nil) or ($2 == ''))) then break; end
    str = $';
    result << $1;
    tag_tmp = $2;
    if (/^<\/?(#{enable_tags})(?![0-9A-Za-z])/i =~ tag_tmp) then result << tag_tmp; end
  end
  return result;
end
------------------------------------------------------------------

--------------------------------------------------------------------
URL     Cyber Heaven (Now restructuring...)
            http://hp.vector.co.jp/authors/VA015150/
e-mail  c-hawk / mtci.ne.jp
UIN     16186638
--------------------------------------------------------------------