看板 Programming 關於我們 聯絡資訊
※ 引述《knives ()》之銘言: : 我用Firefox中的adblock,裡面已經有內建的正規表示法 : 可是其中有一個語法有缺點,會讓Google搜尋壞掉 : /[\W_]ad(?!=&)(banner|click|flow|frame|ima?ge?|log|serv(er|e)?|stream|type|view|vert(ising|isement)?|trix|xchange|wrapper)?s?[\W\d_]/ : ^^問題出在這裡 : 如果打某些中文字去搜尋Google,Google會把中文關鍵字轉成%AD% 這種方式 : 但是這樣的話會讓adblock誤判這是廣告網址 : 我把它修改成這樣 : /[\W_]{1}ad[\W_]{1}(?!=&)(banner|click|flow|frame|ima?ge?|log|serv(er|e)?|stream|type|view|vert(ising|isement)?|trix|xchange|wrapper)?s?[\W\d_]/ : 在ad兩邊加上[\W_]{1} : 不知道這樣做能不能達到這支正規表示法的原來的效果 很奇怪 第一,中文字在內部以兩個(big5固定兩個)或多個8-bit字元來表示 轉成url又會把這些字元換成16進位 所以你看到的是...%A2%AD%A6%C0...這樣長長串列中的一部份 針對%AD來改寫regex就好了,不是對準%AD% 不然%AD在字尾怎麼辦? 第二,寫{1}跟沒寫一樣,畫蛇添足 第三,這個regex應該是match的就擋掉吧? \W意思是除 A-Z, a-z, 0-9, _ 外所有的字元 [\W_]就是以上的組合再加上底線,相當於 [^A-Za-z0-9] 這當中當然包括 % 那你現在寫[\W_]ad[\W_],一樣會match到%AD%,一樣被擋掉,有什麼用 我來寫會這樣寫 [^A-Za-z0-9_%]ad(?!=&) ... 排除 ( ad 前帶 ( 字母 | 數字 | _ | % ),或者後面有跟 & ) 的。後面照舊。   -- BATCH 03 : 買張床 - 切達大俠 - 伐木人之歌 - http://tinyurl.com/3zpyx5 [B4準備中]: 謳歌金錢(7/02) - 單車超人(7/23) - http://tinyurl.com/66v6vq [ 番外篇 ]: 包租婆也有過當羅莉的時候(7/17) - http://tinyurl.com/6j4ale ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ 蒙帝派松正體中文計畫 Spam-a-lot and enjoy the pythonesque delight! ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ http://www.youtube.com/user/JamesBondXD▄▄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.217.62.153