规则合并求助

新手入门、经验交流

Moderator: cre

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

规则合并求助

Post by red »

国内youtube看不了,但有cnyoutube
youtube的视频地址暂时发现有两种形式,http://www.youtube.com/v/xxxxxxxx和http: ... v=xxxxxxxx
而cnyoutube只有http://www.cnyoutube.com/watch?v=xxxxxxxx的形式。为此写了两规则

Code: Select all

In = FALSE
Out = TRUE
Key = "Youtube-1"
URL = "www.youtube.com/v/\1&$JUMP(http://www.cnyoutube.com/watch?v=\1)"

Code: Select all

In = FALSE
Out = TRUE
Key = "Youtube-2"
URL = "www.youtube.com/\1&$JUMP(http://www.cnyoutube.com/\1)"
这两规则能不能合并下
i11
Posts: 11
Joined: Feb 25 2009, 00:06

Re: 规则合并求助

Post by i11 »

Code: Select all

[HTTP headers]
In = FALSE
Out = TRUE
Key = "Youtube-1"
URL = "(http://www.youtube.com((/v/\1)|(/watch\?v=\1)))&$JUMP(http://www.cnyoutube.com/watch?v=\1)"
red
Posts: 99
Joined: Mar 09 2010, 16:25

Re: 规则合并求助

Post by red »

感谢i11,但规则并不起效。原先单独的规则马上就跳转。你给出的规则不会跳转
这是原先的Http Message Log

Code: Select all

New Message Log Window....
BlockList 1365: in IncludeExclude, line 456
GET 1365 : Keywords (List): .f_cookie.
JumpTo: http://www.cnyoutube.com/v=aaaa
1.\的用法还有不明了,help里提到
The Backslash can be used to "escape" any character that has special meaning and treat it as a normal character. For example, to match a parenthesis in the HTML text use "\(", to match a backslash itself use "\\".
具体有些特殊符号,比如?符号算否
2.or语句里\1能使用多次吗
(http://www.youtube.com((/v/\1)|(/watch\?v=\1)))
Bonnie
Moderator
Posts: 165
Joined: Oct 05 2008, 01:27

Re: 规则合并求助

Post by Bonnie »

Code: Select all

In = FALSE
Out = TRUE
Key = "Youtube-1"
URL = "www.youtube.com/(v/|watch?v=) \1&$JUMP(http://www.cnyoutube.com/watch?v=\1)"
所有Proxomitron使用的特殊符号比如*|()\?大多都需要转义。好像唯一的例外是$。如果不确定就添加上转义符,记得不会有副作用。
OR里可以用多个\1,匹配的那个会被储存。
red
Posts: 99
Joined: Mar 09 2010, 16:25

Re: 规则合并求助

Post by red »

非常感谢Bonnie,规则很好用

Code: Select all

www.youtube.com/(v/|watch?v=) \1
有个疑问,为何这里\1之前需要有个空格,仅去掉空格或者去空格后加括号改成

Code: Select all

(www.youtube.com/(v/|watch?v=))\1
变量\1取到的就不是想要的值
Bonnie
Moderator
Posts: 165
Joined: Oct 05 2008, 01:27

Re: 规则合并求助

Post by Bonnie »

不加空格表示将"v/"或者"watch?v="中被匹配的那个放进变量,加了空格表示将"v/"或者"watch?v="后面的内容放进变量。
red
Posts: 99
Joined: Mar 09 2010, 16:25

Re: 规则合并求助

Post by red »

明白了,如果变量跟在一个or语句里不加空格和加空格有区别。如果不在一个or语句里有无空格是一样的。i11的规则其实也是对的 :D 只是我测试时不加http头,所以无法匹配。个人感觉对于$JUMP来说之前的地址还是不加http://的好,并且Bonnie的规则更简洁 :D

Code: Select all

[HTTP headers]
In = FALSE
Out = TRUE
Key = "Youtube-1"
URL = "(www.youtube.com((/v/\1)|(/watch\?v=\1)))&$JUMP(http://www.cnyoutube.com/watch?v=\1)"
User avatar
phoenix
Site Admin
Posts: 526
Joined: Dec 29 2007, 16:27

Re: 规则合并求助

Post by phoenix »

red wrote:明白了,如果变量跟在一个or语句里不加空格和加空格有区别。如果不在一个or语句里有无空格是一样的。
与是否是or语句无关。与是否直接跟在一组圆括号后面有关。

http://www.proxomitron.cn/help/Matching%20Rules.html
More complex matches can be captured by placing the \0-9 directly after a set of parenthesis with no spaces in-between
red wrote:i11的规则其实也是对的 :D 只是我测试时不加http头,所以无法匹配。
他的规则不对。URL Match 部分不能加 http 。
Post Reply