- ベストアンサー
特定タグ以外を変換する方法
- HTML文書から特定のタグ以外を変換する方法について教えてください。
- <[^]とiが上手く作用せず変換がうまくいかない問題について知りたいです。
- 効率的な方法で特定タグ以外を変換する方法についてご教授ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$foo =~ s/<(\/?[^\/a][^>]*)>/##$1##/ig; かな?
その他の回答 (2)
- a-kuma
- ベストアンサー率50% (1122/2211)
> 「教えてあげないと」の意味がよくつかめません。 [^(A|FONT|B|BR)] の ^ に期待していることは、 <\/?([a-zA-Z]+).*> の \1 に相当するところのうちの A|FONT|B|BR 以外ってこと ですもんね。 正規表現で言うと、単純に A|FONT|B|BR 以外って言っちゃうと 長さ0の文字列や空白も、それに相当しますから。
お礼
>長さ0の文字列や空白も、それに相当しますから。 そうですよね。自分でもあとから気付きました。ハズかしいです。^^; 最終的にはこんな感じになりました。 $oktag = 'A|B|FONT|BR'; $hoe =~ s/\<(?!\/?($oktag)( [^>]*)?>)([^>]*)>/<$3>/oisg; 実際は value="<br>" とかコメントタグが入ってくると無効になって しまいますがとりあえずはこれでいいかなと。 ありがとうございました。
- a-kuma
- ベストアンサー率50% (1122/2211)
> ところで「()」のグループ化で「このグループ以外」って指定は > できないんでしたっけ? > > [^(A|FONT|B|BR)] > みたいな…。 無い。 「このグループ以外」と言っても、あなたは暗黙に英数字からなる単語の うち、と考えているわけですから、それも教えてあげないと。 でも、私は、それを一気に書ける正規表現を知りません。
お礼
やはりそうですか。ありがとうございました。 「教えてあげないと」の意味がよくつかめません。 もしよければ補足などお願いします。
お礼
ありがとうございます。:-) その後いろいろ試してこちらでも同じものに行き着きました。 ところで「()」のグループ化で「このグループ以外」って指定は できないんでしたっけ? [^(A|FONT|B|BR)] みたいな…。