一个正则写法问题,请帮忙看看。

新手入门、经验交流

Moderator: cre

Forum rules
  • 软件自带帮助是最好的入门教程,请仔细阅读;在您掌握最基本知识前,我们没法帮助您
  • 提问前请先查阅软件帮助文件和论坛相关讨论
  • 查阅软件帮助和论坛相关讨论即可解决的问题帖将直接删除,以免浪费他人时间
  • 请学会如何提问,尽量将问题描述清楚,不明确的提问将被直接删除
Post Reply
User avatar
cre
Moderator
Posts: 91
Joined: May 26 2009, 00:34

一个正则写法问题,请帮忙看看。

Post by cre » Sep 13 2009, 16:00

<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>
就是可以....
再细细试试,太诡异了。。。。请看图的匹配情况。救救我吧。头疼的很。
Attachments
2009-09-13_155718.png
2009-09-13_155718.png (38.18 KiB) Viewed 5340 times

User avatar
cre
Moderator
Posts: 91
Joined: May 26 2009, 00:34

Re: 一个正则写法问题,请帮忙看看。

Post by cre » Sep 13 2009, 16:02

我就不明白我哪里写错了,或者就算错也不该是这样。
为啥这弄的前面要个 .js 才能匹配?需要两个.js且后者符合这条规则?
这也太邪了。
疯了疯了。哪里的问题。
Last edited by cre on Sep 13 2009, 16:04, edited 1 time in total.

不夜侯
Posts: 101
Joined: Jul 29 2009, 16:22

Re: 一个正则写法问题,请帮忙看看。

Post by 不夜侯 » Sep 14 2009, 09:30

我是新手,但也觉得你将简单的问题复杂化了。

Code: Select all

$NEST(<script\s*</script>)
</script>前为什么要小数点?如果以SRC的路径过滤,则

*src=$AV(*你所选的关键字*)*

如果不是,则

*你所选的关键字*

User avatar
phoenix
Site Admin
Posts: 525
Joined: Dec 29 2007, 16:27

Re: 一个正则写法问题,请帮忙看看。

Post by phoenix » Sep 14 2009, 11:22

把 $LST(Scripts) 的内容发上来看看。

User avatar
cre
Moderator
Posts: 91
Joined: May 26 2009, 00:34

Re: 一个正则写法问题,请帮忙看看。

Post by cre » Sep 14 2009, 12:30

phoenix wrote:把 $LST(Scripts) 的内容发上来看看。
$LST()内容
就是

Code: Select all

<script*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
两条结果是一样的。只是前面加个<script比较快。

bound

Code: Select all

$NEST(<script [^<>]++>,</script>)
$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
2009-09-14_120822.png (41.19 KiB) Viewed 5324 times

不夜侯
Posts: 101
Joined: Jul 29 2009, 16:22

Re: 一个正则写法问题,请帮忙看看。

Post by 不夜侯 » Sep 14 2009, 13:12

关于js过滤,我用了两个规则:
一种以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] ----->"


User avatar
phoenix
Site Admin
Posts: 525
Joined: Dec 29 2007, 16:27

Re: 一个正则写法问题,请帮忙看看。

Post by phoenix » Sep 14 2009, 15:38

这样行吗?

Code: Select all

(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*

User avatar
cre
Moderator
Posts: 91
Joined: May 26 2009, 00:34

Re: 一个正则写法问题,请帮忙看看。

Post by cre » Sep 14 2009, 16:41

phoenix wrote:这样行吗?

Code: Select all

(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
实现上满足要求了。Image
怎么想出这么写的Image
还有点疑惑,用&去限制错在哪了,我写法为啥弄的 前面要有.js .前不看 后面才能工作Image
我觉得

Code: Select all

(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
遇到loadads.js就得歇菜,如果遇到这种怕是必须得用&吧。
不过这也好说,反正是lst,后面加条<*(re|lo|he|p|sh)adad(s |)[^.]+.js*就行了。用正则能减少条数,可是写起来怕是很郁闷Image
受到启发,urlkill中用&失败,一条$URL(^\wuplo)adfile/也可以改成(^upload)adfile/了吧。还是(^upload)*adfile/

本来lst内用.js就是想干净点,kill已经工作了。后来把kill也加到script结果就是误。不夜候的写法很好,src和内容分离。学习了。就是一点觉得晕,src似乎小了点。adjs_content那么大。总觉得经常见到8000以上的都是播放器代码之类的,大了反而误杀。我设置的是5600。

User avatar
phoenix
Site Admin
Posts: 525
Joined: Dec 29 2007, 16:27

Re: 一个正则写法问题,请帮忙看看。

Post by phoenix » Sep 14 2009, 23:10

why wrote: 怎么想出这么写的Image
还有点疑惑,用&去限制错在哪了,我写法为啥弄的 前面要有.js .前不看 后面才能工作Image
等你真正掌握了 ^& 的用法,自然而然会这么写。
why wrote: 我觉得

Code: Select all

(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
遇到loadads.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/ 这样写没有意义。请想想为什么。

Post Reply