[過去ログ] 正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g (989レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
393
(5): 04/04/29 15:34 ID:cR/VctPC(1) AAS
適当な文字列<img src="ダブルクォーテーションを含まない文字列">適当な文字列<br>適当な文字列<適当な文字列"適当な<br>文字列

のような文字列に対して、imgタグやbrタグだけ残して、他の<>"'&あたりを文字参照に置換
したいんですが、正規表現一撃でいけますか?
404
(1): 04/04/29 20:51 ID:??? AAS
>>389
そんなバカなと思いつつ確認完了。
なぜだろう。

>>393
できるかも知れないけど、プログラム書いたほうが楽だと思う。

>>396
外部リンク[html]:www.w3.org
407
(1): 04/04/29 23:02 ID:??? AAS
>>393
my $attr = qr/\w+=(?:(?:(')|(")|([^>]))(?:(?(2)[^']*)(?(3)[^"]*)(?(4)[^\s>]*))(?:(?(2)')(?(3)"))\s*)?/;
my $amp = qr/&(?!(?:(?:\#\d+)|(?:\#x[a-f\d]+)|(?:\w+));)/i;
s/(<\/?\w+\s*(?:$attr)*>)|(<)|(>)|(")|($amp)/
$1 and $1 or $5 and '<' or $6 and '>' or $7 and '"' or $8 and '&'
/xge;

Perlで書いてみたけど、どこか穴があるかも。
410: 393 04/05/03 22:32 ID:??? AAS
>>407ありがと。
しかし内容を理解しようとしてみたが、いまだわかりません。
簡単なhtmlパーサを作っていて、<br>と<img>はインライン要素で、閉じタグもない
から、他の処理がすべて終わった後に置き換えればいいや、というロジックでした。

よく考えたら、文字列中に実体参照で<>が出てきたとしても、&が&amp;に展開
されるので、いちど実体参照に展開してから、すべての処理が終わった後に、

s/&lt;br&gt;/<br>/i
s/&lt;img src=&quot;([^"<>]*)&quot;&gt;/<img src="$1">/i

これでいけました。

いろいろテストしていたので、反応が遅くてすまんです。
411: 393 04/05/03 22:39 ID:??? AAS
あ、gオプション書き忘れ。s///giね。

それと、お世話になりましたので、ヘタレの作ったhtmlパーサでも見てやろうかという
方がいるならアプロダにでもソースさらします。
413: 393 04/05/04 00:09 ID:??? AAS
>>412
HTML::Parseモジュールの使い方を理解するのが面倒くさかった

掲示板の投稿に特定のタグと属性のみ許可する、文法に従わないタグは
その旨マークしてテキストとして表示する、という限定的用途なので、自作
のほうが汎用モジュールより高速だと思った

Perlと正規表現の勉強のため

て、感じで。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.058s