tianheng 发表于 2008-1-22 16:28:34

mushclient高手,正则表达式高手请进

【闲聊】天恒(Tianheng):【 气血 】 481   / 481    100%【 内力 】 870   / 630   (+   0)
正则表达式:^【\s*(.*)\s*】(.*)
目标:%1=闲聊 %2=天恒(Tianheng):【 气血 】 481   / 481    100%【 内力 】 870   / 630   (+   0)
但实际上上面的正则表达式 %1=闲聊】天恒(Tianheng):【 气血 】 481   / 481    100%【 内力%2= 870   / 630   (+   0)


七块红烧牛肉(Hongshao niurou)
正则表达式:^[(.*)[块]*]*红烧牛肉(Hongshao niurou)
目标是通过%1取出七,但实际上匹配不到

请高手帮忙完善解决!

tianheng 发表于 2008-1-22 16:34:17

【闲聊】天恒(Tianheng):【 气血 】 481   / 481    100%【 内力 】 870   / 630   (+   0)
正则表达式:^【\s*(.*)\s*】?(.*)

这样是否可以?

ltblue 发表于 2008-1-22 18:23:58

查帮助在看
仅仅看了某“正则表达式”的部分
mushclient没研究还
请问你的(.*)是相当于zmud里的(*)么?
在帮助里,点(就是.)还有星(就是*)都是有特殊意义的
*         匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。
.          匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
也许带了括号就不同了?呵呵
你的\s是代表空格,而\s*代表0-n个空格,是么?
不过貌似这里没空格的说......不行你把他们去掉试试?

跟着学习,等高手

iever 发表于 2008-1-22 20:25:58

【闲聊】天恒(Tianheng):【 气血 】 481   / 481    100%【 内力 】 870   / 630   (+   0)

trigger:
^.*【(.*)】(.*)\((.*)\):(.*)$

%1=闲聊
%2=天恒
%3=Tianheng
%4=【 气血 】 481   / 481    100%【 内力 】 870   / 630   (+   0)


满意了吧。

iever 发表于 2008-1-22 20:48:11

七块红烧牛肉(Hongshao niurou)

正则匹配:
^(.*)块红烧牛肉\(Hongshao niurou\)$
%1=七

ltblue 发表于 2008-1-22 21:03:53

跟着分析
^.*是代表顶格触发,或者有任意个(0-n)的非\n的字节在前面触发。
*         匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。
看来*的前面如果是通配符则要求他们的“值”必须一致,而不能有区别,比如\d*应该可以匹配00,11,222,但123是不行的。
事实上,在mud里,前面最多有个>吧,直接写^>*不行么?
剩下的就没什么疑问了,只是不知道(.*)怎么用正则式来解释,或者他和正则式无关,是mus的命令?

ltblue 发表于 2008-1-22 21:19:17

红烧肉的,分析下楼主的吧
^[(.*)[块]*]*红烧牛肉(Hongshao niurou)
这里的两个]*不知道该怎么算,理论上可以算0-n个]的,但我们又有
字符集合。匹配所包含的任意一个字符。例如, '' 可以匹配 "plain" 中的 'a'。
如果算0个],那前面的[就只能算普通字符,如果算1个],就算字符集合了......到底是怎么回事呢
这么问吧,如何区别匹配里的“普通字符”和“特殊字符”呢?比如[,什么时候是普通的[,什么时候是有含义的呢?总不能在前面加\吧......
举个例子,加入服务器有如下语句
块红烧牛肉
想抓7,是不是应该写成
^[(.*)]块红烧牛肉
那如果想如果是7或8或9块就触发,否则不触发的话,该怎么写呢?
^[]块红烧牛肉
这样?
请教

tianheng 发表于 2008-1-23 09:24:39

原帖由 iever 于 2008-1-22 08:48 PM 发表 http://pkuxkx.3322.org:8080/pkuxkx/forum/images/common/back.gif
七块红烧牛肉(Hongshao niurou)

正则匹配:
^(.*)块红烧牛肉\(Hongshao niurou\)$
%1=七

匹配两块(含两块)这个没有问题,一块的情况呢,考虑没有?

tianheng 发表于 2008-1-23 09:27:16

原帖由 iever 于 2008-1-22 08:25 PM 发表 http://pkuxkx.3322.org:8080/pkuxkx/forum/images/common/back.gif
【闲聊】天恒(Tianheng):【 气血 】 481   / 481    100%【 内力 】 870   / 630   (+   0)

trigger:
^.*【(.*)】(.*)\((.*)\):(.*)$

%1=闲聊
%2=天恒
%3=Tianheng
%4=【 气血 】 481   / 481    100 ...
这个抓聊天的确实没有问题,但像天气、系统公告等呢,就不行了

tianheng 发表于 2008-1-23 09:50:33

chat* wave
【闲聊】找乐子挥了挥手。(wave)

这样的也应该匹配不到
页: [1] 2 3
查看完整版本: mushclient高手,正则表达式高手请进