返回列表 发帖

关于过滤规则的几点疑问

置顶的过滤规则教程里关于正则表达式有如下表述:
  1. $i
  2. 表示前面用 () 捕获的第 i 个子表达式. i = 1, 2, 3...
  3. 例: $1 表示前面用 <a[^>]*?href=(".*?")[^>]*?> 捕获 <a href="http://bbs.ioage.com/">
  4. 得到的 "http://bbs.ioage.com/" 部分. 用于 replace 及 return 部分
复制代码


实践证明这里的$i似乎应为\i

1、正则表达式的种类似乎太多(比如微软的MSDN里提到的、Perl正则表达式、Unix正则表达式、UltraEdit正则表达式等等,奇怪的是微软的VS2008编辑器用的正则表达式似乎和MSDN里提到的不完全相同),虽然大同小异,但这些“小异”往往会造成很多麻烦。论坛是不是出一个由开发者提供的正则表达式规范?

2、广告过滤时,似乎只能利用正则表达式来检索,而不能用来替换。举个例子,比如我要把
  1. <a href="path1...">xxx</a>
复制代码
的内容(其中xxx是任意合乎html规范的内容)替换成
  1. <a href="path2...">xxx</a>
复制代码

按照一般正则表达式的理解,只需写成如下
  1. #ex#<a href="path1([^"]*?)">([^<]*>)</a>#<a href="path2\1">\2</a>
复制代码
即可。遗憾的是目前版本的TW不支持这么干。

过滤本页的源码的<html xmlns="http://www.w3.org/1999/xhtml">
  1. #ex#<html xmlns=(['"])([^'"]*?)$1>###<html $2>
复制代码
过滤,结果不变<html xmlns="http://www.w3.org/1999/xhtml">

  1. #ex#<html xmlns=(['"])([^'"]*?)\1>###<html $2>
复制代码
过滤,结果为<html http://www.w3.org/1999/xhtml>,满足要求

  1. #ex#<html xmlns=(['"])([^'"]*?)\1>###<html \2>
复制代码
过滤,结果为<html \2>

智商有限,就只贴试验结果,不加评论了

TOP

回复 4# elkay 的帖子

所以有了顶楼1号要求

TOP

返回列表