lzkd 发表于 2010-4-4 09:08:40

这是楼主的---/的问题我先改掉了---楼主的问题应该要把最后一个$改成.*$
.^(> )*\( 你上一个动作还没有完成,不能施用内功。\)$.
这是ddid的---ddid的问题是(和你之间,漏加空格了(抓到ddid的错不容易,同学们欢呼吧!!!!)
.^[>]*\(你上一个动作还没有完成,不能施用内功。\).*$.
.
这是丹枫的---大家注意看,丹枫的最后是没有$
.
^(>\s)*\( 你上一个动作还没有完成,不能施用外功。\)


---

呃....因为答应了某人陪她游戏,没时间进MUD试证了,有兴趣的同学可以试一下

[ 本帖最后由 lzkd 于 2010-4-4 09:14 AM 编辑 ]

purbam 发表于 2010-4-4 10:45:08

原帖由 hba 于 2010-4-3 10:06 PM 发表 http://pkuxkx.com/forum/images/common/back.gif

一样,这个我来回改过了。

我把你顶楼的语句直接贴进mush,只改了\,是可以工作的
不知道为什么你不可以,尤其是不知道为什么把空格改成\s就可以了,这两个应该是没有区别的
而且你在括号外面加了*,这样其实不管括号里面写了什么都不应该影响匹配,最多只是行首出现> (的时候不能匹配,不过这种在zmud中经常出现,在mush里面好像不大常见

至于最后加不加$,$前面有没有.*都是为了更安全,但在大多数情况下是不会影响匹配的

myu 发表于 2010-4-4 10:48:21

我怀疑楼主是不是疏忽了,没有勾上正则表达式

lzkd 发表于 2010-4-4 11:25:29

原帖由 myu 于 2010-4-4 10:48 AM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
我怀疑楼主是不是疏忽了,没有勾上正则表达式

有道理,赞一个,这的确是一个可能.

hba 发表于 2010-4-4 11:44:12

原帖由 lzkd 于 2010-4-4 11:25 AM 发表 http://pkuxkx.com/forum/images/common/back.gif


有道理,赞一个,这的确是一个可能.

原帖由 myu 于 2010-4-4 10:48 AM 发表 http://pkuxkx.com/forum/images/common/back.gif
我怀疑楼主是不是疏忽了,没有勾上正则表达式

啧啧,这种低级错误我怎么可能犯呢。看到5楼我贴出来的触发没有。


原帖由 purbam 于 2010-4-4 10:45 AM 发表 http://pkuxkx.com/forum/images/common/back.gif


我把你顶楼的语句直接贴进mush,只改了\,是可以工作的
不知道为什么你不可以,尤其是不知道为什么把空格改成\s就可以了,这两个应该是没有区别的
而且你在括号外面加了*,这样其实不管括号里面写了什么都不应 ...

我原来就是用的\,不行之后试了一下/还不行才发文询问;
ddid回应的我也直接粘贴进去测试不行;
直到丹枫的语句贴进去才测试通过。

lzkd 发表于 2010-4-4 11:54:05

原帖由 hba 于 2010-4-4 11:44 AM 发表 http://www.pkuxkx.com/forum/images/common/back.gif




啧啧,这种低级错误我怎么可能犯呢。看到5楼我贴出来的触发没有。




我原来就是用的\,不行之后试了一下/还不行才发文询问;
ddid回应的我也直接粘贴进去测试不行;
直到丹枫的语句贴进去才测试通过 ...
有没有试一下我改的?看行不行?

ddid 发表于 2010-4-4 12:39:35


这是ddid的---ddid的问题是(和你之间,漏加空格了(抓到ddid的错不容易,同学们欢呼吧!!!!)


呵呵,其实我经常犯错的,不过呢,知错就改嘛…… 改了再犯…… 犯了再改…… 千锤百炼嘛~

其实这个错误昨晚我就发现了,不过danfeng的回答既然可以通过,我再去修改我的,有点不合适。

现在给个狠一点点的:

^.*\(你上一个动作还没有完成,不能施用内功。\).*$


解决全部问题,其实我自己就是这么用的。

seagate 发表于 2010-4-4 13:31:08

正则表达式最好用RegexTester测试一下,这个工具测试通过了肯定没问题,没通过直接用那个工具修改就可以了。直到通过为止然后贴到mush里面用就可以了,以后如果碰到特别复杂的正则你用mush测试就太累了。最好自己下载一个RegexTester,搜索一下,应该非常多!经典的正则表达式工具。(不过部分特别复杂的语法mush不知道支持不?不支持就修改修改呗。)

myu 发表于 2010-4-4 13:43:30

其实这个表达式的标准写法应该是这样子的
^[>\s]*^.\(你上一个动作还没有完成,不能施用内功。\)$
至于为什么,听我道来
1.前面为什么要用[>\s]而不用(>\s),因为[ ]表示的是字符集,所以无论前面出现多少个>和空格,次序如何,都是匹配的;而(>\s)就不同了,(>\s)仅表示>后面一个空格,很严格,比如说前面如果是这样子的>>\s>,那就匹配不了。
2.尾部为什么不用.*$,这个是最小匹配原则,当然在这个例子里写不写都无所谓,不过不写.*感觉漂亮而自信。当然你如果不放心,硬要写.*$,我的习惯是不写,不写.*也不写$

ddid 发表于 2010-4-4 13:44:39

http://www.gammon.com.au/mushclient/regexp.htm


MUSHclient uses the Perl-Compatible Regular Expression (PCRE) matching engine, written by Philip Hazel.
页: 1 [2] 3 4
查看完整版本: 正则表达式的问题。