*你晃动着手中的木棒,到处寻找目标。%s*$");结果就是 ... 请教个lua内的正则问题 ,北大侠客行MUD论坛" />

ltblue 发表于 2015-3-25 17:11:40

请教个lua内的正则问题

我想匹配
你晃动着手中的木棒,到处寻找目标。
我怕前面带>,怕后面带空格,于是我这么匹配

l,w = wait.regexp("^>*你晃动着手中的木棒,到处寻找目标。%s*$");

结果就是匹配不到
(lua里用%s代表空格)

如果把%s*去掉,或者换成.*,都能匹配到

按理说,*,是0到任一个,那我在任何地方加%s*,都不应该啊
谁知道,帮忙看看呗,多谢

北大侠客行MUD,中国最好的MUD

ltblue 发表于 2015-3-25 17:30:42

把*换成-,依然不行
l,w = wait.regexp("^>*你晃动着手中的木棒,到处寻找目标。%s-$");

我的理解,*号,应该可以匹配0次到多次,为什么0次就不行了呢?

cappuccino 发表于 2015-3-25 17:32:27

l,w = wait.regexp("^[> ]*你晃动着手中的木棒,到处寻找目标。\\s*$");

cappuccino 发表于 2015-3-25 17:34:51

唷,研究+回帖的功夫,沙发都木有了。。看来小苏学业有成啊:-)

to 楼主:
lua的正则表达式和mush的正则表达式遵循的标准不同,具体请百度

ltblue 发表于 2015-3-25 21:03:48

回复 5# cappuccino


我就是对照着lua的手册看的......
我自己研究了一下,最后成功的如下
^[>]*[ ]*[%s]*你晃动着手中的木棒,到处寻找目标。[%s]*$
其实核心就是多个[]罢了

当然,之前我之所以加了[>]*[ ]*[%s]*
这么一长串,是因为有的时候有>,而>之后还有空格,更可恨的是,空格并不是空格,ascii是17的东西......我怕他有真假空格,所以干脆都加上了......

ltblue 发表于 2015-3-25 21:05:45

另外,我看的lua书里,都是用的%,而不是\
%s%d%x%X
等等等等
跟mush里的的确不同

seagull 发表于 2015-3-26 12:13:08

原来mush和lua不一样,难怪有些要加上[]才有效,学习了
页: [1]
查看完整版本: 请教个lua内的正则问题