質問: 自分は「 TextSS 」という置き換えソフトを使っていますが、 HTML ファイル を対象として、以下の置き換えを行う正規表現( Perl5 )の記述を教えて ください。 ・ 「 href="リンク先" 」属性が含まれるタグをコメントアウト ( )する ・ できるなら、タグ内に半角空白と改行が含まれる場合は、記述ミスに ならないように半角空白 1 つ( タグ内で 1 つという意味ではない ) に変換する ・ 半角空白と改行を処理する場合は、属性値内の半角空白はそのままにして、 改行は半角空白に変換する( 属性値内の扱いは、そうですよね? ) でもって、以下の条件があります ・ 属性値は、引用符( 「 " 」「 ' 」)で囲んであるとは限らない ・ 各属性間は、改行と半角スペースが複数存在する ・ 改行と半角スペースは、場所によって順序や数が同じではない 例:「
回答: タグの中身部分を「([^<]|<(?!a))*」にしてはどうでしょう。「『<』以外もしくはaの続かない『<』」の繰り返しです。Aタグの中にAタグがあることはないだろう、と考えてこうしました。 $nは9までです。[^A]*は「『A以外の1文字』の0文字以上の繰り返し」なので結果的に「Aを含まない文字列」になります。 今回、私は下のサイトを参考にしました。「(?!」を使ったのは初めてでこちらも勉強になりました。