Re: [問題] 我想要比對不在 HTML Tag 之中的文字

看板Perl作者 (可愛中央處理器)時間19年前 (2006/06/11 00:39), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/6 (看更多)
※ 引述《Daira (Daira)》之銘言: : 補充一下我的問題 : ※ 引述《Daira (Daira)》之銘言: : : 我想在一篇 HTML 的原始碼中搜尋並取代資料 : : 比方說我可能要找 'HTML' 這個 pattern,然後取代成 '超文字標記語言' 之類的 : : 但是我希望找到的是在畫面上會顯示的 HTML 四個字元 : : 而不要它比對到 <html> 或是 </html> 這些 tag 中的 html : : 但是我一直想不出 Regular Expression 要怎麼寫 : : 所以上來請教大家 >"< : 我目前的想法是,只要 pattern 出現在 < 和 > 符號之中,就可以直接忽略掉 : 但是這個想法不知道要怎麼實作 $pat1='(?<=[^<]/)html'; $pat2='(?<=[^</])html'; $pat3='html(?=[^>])'; $pat4='^html'; /$pat1|$pat2|$pat3|$pat4/i : : 另外,還有一個問題是,如果我想找的是 'm' 這個 pattern : : 可是在 Big5 編碼下,他會比對到 '然' 這個中文字(因為下位元碼是 'M') : : 我目前的想法是寫成 : : /((?:[\x01-\x7F]|^)(?:[\x80-\xFF]{2})*|^)m/ : : 這樣去比對 : : 大致上還堪用,可是有一個問題是 : : 如果出現連續的兩個 'm',第二個 'm' 會沒有辦法被比對到 : : 也是想請教大家有沒有解決辦法... : : 感謝大家... : 我之前有找到一個解決辦法是用 use encoding 'big5'; : 測試過之後還是會有一些奇怪的問題(比方說取代時還是會切到一個中文字) : 而且重點是,執行效率有明顯的降低... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.63.246.28

06/11 02:38, , 1F
原來還有這種用法!!
06/11 02:38, 1F
文章代碼(AID): #14YlNLBc (Perl)
討論串 (同標題文章)
文章代碼(AID): #14YlNLBc (Perl)