一个正则写法问题,请帮忙看看。
Moderator: cre
Forum rules
- 软件自带帮助是最好的入门教程,请仔细阅读;在您掌握最基本知识前,我们没法帮助您
- 提问前请先查阅软件帮助文件和论坛相关讨论
- 查阅软件帮助和论坛相关讨论即可解决的问题帖将直接删除,以免浪费他人时间
- 请学会如何提问,尽量将问题描述清楚,不明确的提问将被直接删除
一个正则写法问题,请帮忙看看。
<script type="text/javascript" src="/configs/article/cwjad.js"></script>
使用
$NEST(<script [^<>]++>,</script>)
$NEST(<script *>,</script>)
$NEST(<script*,</script>)
<script*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
都无效,用*cwjad*就有效。
如果把cwjad.js放中间就有效。
<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>
改成*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
同上效果
如果不是<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>而是
<script >cwjad.js</script>
<script type="text/javascript">cwjad.js</script>
却不起作用。。。。
纳闷半天觉得迷惑的很。太纳闷了,如果写错也就罢了,可是
<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>
就是可以....
再细细试试,太诡异了。。。。请看图的匹配情况。救救我吧。头疼的很。
使用
$NEST(<script [^<>]++>,</script>)
$NEST(<script *>,</script>)
$NEST(<script*,</script>)
<script*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
都无效,用*cwjad*就有效。
如果把cwjad.js放中间就有效。
<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>
改成*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
同上效果
如果不是<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>而是
<script >cwjad.js</script>
<script type="text/javascript">cwjad.js</script>
却不起作用。。。。
纳闷半天觉得迷惑的很。太纳闷了,如果写错也就罢了,可是
<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>
就是可以....
再细细试试,太诡异了。。。。请看图的匹配情况。救救我吧。头疼的很。
- Attachments
-
- 2009-09-13_155718.png (38.18 KiB) Viewed 8353 times
Re: 一个正则写法问题,请帮忙看看。
我就不明白我哪里写错了,或者就算错也不该是这样。
为啥这弄的前面要个 .js 才能匹配?需要两个.js且后者符合这条规则?
这也太邪了。
疯了疯了。哪里的问题。
为啥这弄的前面要个 .js 才能匹配?需要两个.js且后者符合这条规则?
这也太邪了。
疯了疯了。哪里的问题。
Last edited by cre on Sep 13 2009, 16:04, edited 1 time in total.
Re: 一个正则写法问题,请帮忙看看。
我是新手,但也觉得你将简单的问题复杂化了。
</script>前为什么要小数点?如果以SRC的路径过滤,则
*src=$AV(*你所选的关键字*)*
如果不是,则
*你所选的关键字*
Code: Select all
$NEST(<script\s*</script>)
*src=$AV(*你所选的关键字*)*
如果不是,则
*你所选的关键字*
Re: 一个正则写法问题,请帮忙看看。
把 $LST(Scripts) 的内容发上来看看。
Re: 一个正则写法问题,请帮忙看看。
$LST()内容phoenix wrote:把 $LST(Scripts) 的内容发上来看看。
就是
Code: Select all
<script*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
bound
Code: Select all
$NEST(<script [^<>]++>,</script>)
$NEST(<script *>,</script>)
$NEST(<script*,</script>)
跟$LST()与否无关。我在match使用效果是一样的。
Code: Select all
0<script .js >cwjad.js</script>
1<script >cwjad.js</script>
2<script type="text/javascript">cwjad.js</script>
3<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>
4<script type="text/javascript" src="aad.js">cwjad.js</script>
5<script type="text/javascript" src="rr.js">cwjad.js</script>
6<script type="text/javascript" src=".js">cwjad.js</script>
7<script type="text/javascript" src="js">cwjad.js</script>
8<script src="js">cwjad.js</script>
9<script src=".js">cwjad.js</script>
10<script>.js cwjad.js</script>
11<script>read.js cwjad.js</script>
12<script>cwjad.js a.js</script>
13<script>00.js ad.js</script>
AA<script>cwjad.js</script>
BB<script>aaad.js</script>
CC<script read.js>aaad.js</script>
DD<script>read.js</script>
EE<script a.js>adadd.js</script>
FF<script >adadd.js</script>
测试下就知道我说的什么了。
不夜侯所说...请仔细看下,规则前面没用什么点。可是使用中就是。。。。
$NEST(<script\s*</script>)
这写法。。。。需要\s么。
不过你倒是提醒了我。。不管是不是src,前面都可以加个\=$AV(*....*)
比如
Code: Select all
<script*\=$AV((*ad&(^*(re|lo|he|p|sh)ad))*[^d.]+.js*)*
- Attachments
-
- 2009-09-14_120822.png (41.19 KiB) Viewed 8337 times
Re: 一个正则写法问题,请帮忙看看。
关于js过滤,我用了两个规则:
一种以src路径过滤,其实这个直接放在默认规则的adlist中就行了。
另一种以内容关键字过滤:
一种以src路径过滤,其实这个直接放在默认规则的adlist中就行了。
Code: Select all
[Patterns]
Name = "Kill adjs_src"
Active = TRUE
Multi = TRUE
URL = "$TYPE(htm)"
Bounds = "<script\s*</script>"
Limit = 256
Match = "\0 (src=($AV(*$LST(Adsrc_js)*)))\1*"
Replace = "<!-----Kill adjs_\1----->"
Code: Select all
[Patterns]
Name = "Kill Adjs_content"
Active = TRUE
Multi = TRUE
URL = "$TYPE(htm)"
Bounds = "<script*</script>"
Limit = 10000
Match = "*($LST(Adjs_content))\1*"
Replace = "<!----- Kill Adjs_content=[\1] ----->"
Re: 一个正则写法问题,请帮忙看看。
这样行吗?
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
Re: 一个正则写法问题,请帮忙看看。
实现上满足要求了。phoenix wrote:这样行吗?
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
怎么想出这么写的
还有点疑惑,用&去限制错在哪了,我写法为啥弄的 前面要有.js .前不看 后面才能工作
我觉得
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
不过这也好说,反正是lst,后面加条<*(re|lo|he|p|sh)adad(s |)[^.]+.js*就行了。用正则能减少条数,可是写起来怕是很郁闷
受到启发,urlkill中用&失败,一条$URL(^\wuplo)adfile/也可以改成(^upload)adfile/了吧。还是(^upload)*adfile/?
本来lst内用.js就是想干净点,kill已经工作了。后来把kill也加到script结果就是误。不夜候的写法很好,src和内容分离。学习了。就是一点觉得晕,src似乎小了点。adjs_content那么大。总觉得经常见到8000以上的都是播放器代码之类的,大了反而误杀。我设置的是5600。
Re: 一个正则写法问题,请帮忙看看。
等你真正掌握了 ^ 和 & 的用法,自然而然会这么写。why wrote: 怎么想出这么写的
还有点疑惑,用&去限制错在哪了,我写法为啥弄的 前面要有.js .前不看 后面才能工作
未必,用 | 就可以了。why wrote: 我觉得遇到loadads.js就得歇菜,如果遇到这种怕是必须得用&吧。Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*|*loadads.js*
或许是后者,具体要看你的规则。why wrote: 受到启发,urlkill中用&失败,一条$URL(^\wuplo)adfile/也可以改成(^upload)adfile/了吧。还是(^upload)*adfile/?
(^upload)adfile/ 这样写没有意义。请想想为什么。