purbam
发表于 2010-4-4 14:05:04
原帖由 hba 于 2010-4-4 11:44 AM 发表 http://pkuxkx.net/forum/images/common/back.gif
啧啧,这种低级错误我怎么可能犯呢。看到5楼我贴出来的触发没有。
我原来就是用的\,不行之后试了一下/还不行才发文询问;
ddid回应的我也直接粘贴进去测试不行;
直到丹枫的语句贴进去才测试通过 ...
所以我觉得很奇怪,你的问题应该不是正则写法的问题,有可能是中文字符的问题,你一开始copy的字符可能有问题,所以怎么改都不匹配
purbam
发表于 2010-4-4 14:07:12
原帖由 ddid 于 2010-4-4 12:39 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
呵呵,其实我经常犯错的,不过呢,知错就改嘛…… 改了再犯…… 犯了再改…… 千锤百炼嘛~
其实这个错误昨晚我就发现了,不过danfeng的回答既然可以通过,我再去修改我的,有点不合适。
现在给个狠一点点 ...
^.*\(你上一个动作还没有完成,不能施用内功。\).*$
这样写不好吧,失去在前面加^和在末尾加$的意义了
这样写和直接写 \(你上一个动作还没有完成,不能施用内功。\)没什么区别
ddid
发表于 2010-4-4 15:51:18
0
lzkd
发表于 2010-4-4 16:28:15
这个帖都有资料进精华了..
zeze,各种方法手段呀,各种想法,看的这叫一个舒服
hba
发表于 2010-4-4 16:43:08
原帖由 myu 于 2010-4-4 01:43 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
其实这个表达式的标准写法应该是这样子的
^[>\s]*^.\(你上一个动作还没有完成,不能施用内功。\)$
至于为什么,听我道来
1.前面为什么要用[>\s]而不用(>\s),因为[ ]表示的是字符集,所以无论前面出现多少个>和空 ...
话说这是我一直以来最大的正则问题,一直闹不懂为什么主流正则有这两种写法,有何不同,这下受教了。敢问大侠在mud中是何人?让我膜拜一下。
原帖由 lzkd 于 2010-4-4 11:54 AM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
有没有试一下我改的?看行不行?
没试了,忙着啊,你知道的,呵呵。
丹枫那个行了就用了。这次再改myu的。
[ 本帖最后由 hba 于 2010-4-4 04:44 PM 编辑 ]
hba
发表于 2010-4-4 16:47:06
原帖由 myu 于 2010-4-4 01:43 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
2.尾部为什么不用.*$,这个是最小匹配原则,当然在这个例子里写不写都无所谓,不过不写.*感觉漂亮而自信。当然你如果不放心,硬要写.*$,我的习惯是不写,不写.*也不写$
不写.*我能理解,但$不写为何?总感觉加个$稳健一些。
myu
发表于 2010-4-4 17:16:33
re25,26:过奖了
我对正则接触得较早,但其实mush是最近才玩的,也算不得什么高人,至于尾部的问题,我看是不是这样解释,加$是为了匹配行尾,与用^强制匹配行首的原理是一样的。但如果写成.*$,表示任意多字符后碰到行尾,这还有意义吗。
.*$的写法与.*^的写法有什么区别呢?写了只是增加其抽象性,对于防止flood毫无作用,不如不写。
myu
发表于 2010-4-4 17:26:24
原帖由 myu 于 2010-4-4 01:43 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
其实这个表达式的标准写法应该是这样子的
^[>\s]*^.\(你上一个动作还没有完成,不能施用内功。\)$
至于为什么,听我道来
1.前面为什么要用[>\s]而不用(>\s),因为[ ]表示的是字符集,所以无论前面出现多少个>和空 ...
有点笔误哈,正确的应该是
^[>\s]*\( 你上一个动作还没有完成,不能施用内功。 \)$ttk_13
seagate
发表于 2010-4-4 17:38:31
加^和$都是为了强匹配,其实不用大多数情况下关系不大,只要你机器人有的触发特别要命的时候最好用^[> ]{0,2}TRIGGER$的形式圈起来,以防止出现问题。
ddid
发表于 2010-4-4 17:47:37
正则。 ——没有最好,只有更好……