« 正規表現なんて嫌い… | トップページ | 急に眠気が…… »

2006/05/30

【覚書】Perlで特定タグ以外を置換

知人より、以下のようにすれば、とアドバイスを受ける。

$chkStr=~s/<(?!(\/?)(add|del|notice|bgcolor)[ >])([^>]*)>/&lt;$1$2$3&gt;/g;
キーワード(add|del|notice|bgcolor)直後に[ >]を付けたあとで否定(?!)するのがミソ。
なるほどねぇ。
#! /usr/bin/perl -wとしているとwarningが出てしまうが、それくらいは我慢しようか

« 正規表現なんて嫌い… | トップページ | 急に眠気が…… »

パソコン・インターネット」カテゴリの記事

ひとりごと」カテゴリの記事

覚書」カテゴリの記事

コメント

今更ですが
$chkStr=~s/<((?!(\/?)(add|del|notice|bgcolor)>)([^>]*))>/&lt;$1&gt;/g;
と、マッチパターンを更に ( ) で括って $1 にまとめることで
-w でも文句言われなくなりました。
あと、[>] は > でよかったです。

コメントスパム防止対策画像。半角で入力せよって書いてないので
全角で書いてみたらはねられた。ひどい。どうみても全角なのに(嘘)

コメントスパム防止対策画像。半角で入力せよって書いてないので
全角で書いてみたらはねられた。ひどい。どうみても全角なのに(嘘)

しかも、2つ目のコメントは一回しか書いてないはずなのに
2コメントにされてしまひました。
何のためにコメントスパム防止画像つけてるのやら・・・

しかもサイドバーの「最近のコメント」だと3つ目のダブりは
なかったことにされてるような気が・・・

munou さん、どうもです。

| 今更ですが

フォロー有り難う……というか、よく見つけましたね、この記事。
考えてみれば、全体を括弧で括ってしまうなら、中の2組の括弧は不要になりますね。
$chkStr=~s/<((?!\/?(add|del|notice|bgcolor)[ >])[^>]*)>/&lt;$1&gt;/g;
でいける?

| あと、[>] は > でよかったです。
[>]じゃなくて[ >]です。
#これは<bgcolor name="#xxxxxx">のパターンがあるので必要。
 
| 全角で書いてみたらはねられた。
おんなじことしている……。
ちなみに私が試したときには二重投稿にはなりませんでした。
#どうも、この間のメンテ以降に二重投稿になる確率が増えたような気がする……。

| サイドバーの「最近のコメント」だと3つ目のダブりはなかったことにされてるような

一応、今は計5件見えていますね。
これに関しては、反映が遅いだけだと思います。

というか、サイドバーの『最近のコメント』で見ると、まさに一見スパムチック。
重複分を消そうかとも思いましたが、意味が通じなくなるのでそのままで。

あと、コメント通知メールは、2006/07/26 午前8時現在、5件中3件しか来てません。困ったものです。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 【覚書】Perlで特定タグ以外を置換:

« 正規表現なんて嫌い… | トップページ | 急に眠気が…… »

戻るリンク追加

カレンダー

2025年1月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

ココログカレンダーPlus(旧2)

検索


    • Web全体 サイト内
    • 蔵書のISBNを入力して下さい
    • はじめる前
      初級者向け
      上級者向け
      ブログ紹介
      結果を表示

コメントリストツリー化

無料ブログはココログ