作者cutecpu (可爱中央处理器)
看板perl
标题Re: [问题] 我想要比对不在 HTML Tag 之中的文字
时间Sun Jun 11 00:53:04 2006
※ 引述《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
1F:推 abliou:原来还有这种用法!! 06/11 02:38