北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
楼主: hba

正则表达式的问题。

[复制链接]
发表于 2010-4-4 09:08:40 | 显示全部楼层
这是楼主的---/的问题我先改掉了---楼主的问题应该要把最后一个$改成.*$
.
  1. ^(> )*\( 你上一个动作还没有完成,不能施用内功。\)$
复制代码
.
这是ddid的---ddid的问题是(之间,漏加空格了(抓到ddid的错不容易,同学们欢呼吧!!!!)
.
  1. ^[>]*\(你上一个动作还没有完成,不能施用内功。\).*$
复制代码
.
.
这是丹枫的---大家注意看,丹枫的最后是没有$
.
  1. ^(>\s)*\( 你上一个动作还没有完成,不能施用外功。\)
复制代码



---

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

[ 本帖最后由 lzkd 于 2010-4-4 09:14 AM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-4-4 10:45:08 | 显示全部楼层
原帖由 hba 于 2010-4-3 10:06 PM 发表

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


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

至于最后加不加$,$前面有没有.*都是为了更安全,但在大多数情况下是不会影响匹配的
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-4-4 10:48:21 | 显示全部楼层
我怀疑楼主是不是疏忽了,没有勾上正则表达式
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-4-4 11:25:29 | 显示全部楼层
原帖由 myu 于 2010-4-4 10:48 AM 发表
我怀疑楼主是不是疏忽了,没有勾上正则表达式


有道理,赞一个,这的确是一个可能.
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-4-4 11:44:12 | 显示全部楼层
原帖由 lzkd 于 2010-4-4 11:25 AM 发表


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

原帖由 myu 于 2010-4-4 10:48 AM 发表
我怀疑楼主是不是疏忽了,没有勾上正则表达式


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


原帖由 purbam 于 2010-4-4 10:45 AM 发表


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


我原来就是用的\,不行之后试了一下/还不行才发文询问;
ddid回应的我也直接粘贴进去测试不行;
直到丹枫的语句贴进去才测试通过。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-4-4 11:54:05 | 显示全部楼层
原帖由 hba 于 2010-4-4 11:44 AM 发表




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




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

有没有试一下我改的?看行不行?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-4-4 12:39:35 | 显示全部楼层
这是ddid的---ddid的问题是(和你之间,漏加空格了(抓到ddid的错不容易,同学们欢呼吧!!!!)


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

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

现在给个狠一点点的:

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


解决全部问题,其实我自己就是这么用的。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-4-4 13:31:08 | 显示全部楼层
正则表达式最好用RegexTester测试一下,这个工具测试通过了肯定没问题,没通过直接用那个工具修改就可以了。直到通过为止然后贴到mush里面用就可以了,以后如果碰到特别复杂的正则你用mush测试就太累了。最好自己下载一个RegexTester,搜索一下,应该非常多!经典的正则表达式工具。(不过部分特别复杂的语法mush不知道支持不?不支持就修改修改呗。)
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-4-4 13:43:30 | 显示全部楼层
其实这个表达式的标准写法应该是这样子的
^[>\s]*^.\(你上一个动作还没有完成,不能施用内功。\)$
至于为什么,听我道来
1.前面为什么要用[>\s]而不用(>\s),因为[ ]表示的是字符集,所以无论前面出现多少个>和空格,次序如何,都是匹配的;而(>\s)就不同了,(>\s)仅表示>后面一个空格,很严格,比如说前面如果是这样子的>>\s>,那就匹配不了。
2.尾部为什么不用.*$,这个是最小匹配原则,当然在这个例子里写不写都无所谓,不过不写.*感觉漂亮而自信。当然你如果不放心,硬要写.*$,我的习惯是不写,不写.*也不写$
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 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.
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-12-1 02:54 AM , Processed in 0.011558 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表