shenji 发表于 2022-7-4 00:03:14

suwuji 发表于 2022-7-3 06:58 AM
自己写一个就好啦

string.has = function(str, findthis)


结合最近看制作推车机器人视频学到的微薄知识,竟然看懂了大佬的意思,妙哇yct23虽然lua没有split函数,要自己定义(但我推车脚本有写了。flee)

creat 发表于 2022-7-4 00:07:01

shenji 发表于 2022-7-3 11:50 PM
感谢指路,我找到了lua一个能自定义匹配字符的正则[]

macth: ^你说道:「(.*)」$


这条不是正路,原因是[]匹配的是单字符
这里一定要注意 是 单个字符
而汉字,包括这个例子中的星星都是双字符

shenji 发表于 2022-7-4 00:41:43

creat 发表于 2022-7-4 12:07 AM
这条不是正路,原因是[]匹配的是单字符
这里一定要注意 是 单个字符
而汉字,包括这个例子中的星星都是双 ...

但是还是成功匹配了,什么情况下会出错呢,或者说这样有啥隐患?

我试了一下:

match:^你说道:「(.*)」$
send:
if string.find("%1","[我们,你好,1,abcdefg]") then
   Note("匹配成功")
end

>
你说道:「我们」
匹配成功
>
你说道:「你好」
匹配成功
>
你说道:「1」
匹配成功
>
你说道:「abcdefg」
匹配成功
>

--------------------------------------------

我又试了一下,好像是调用匹配的内容的时候会出问题

match:^你说道:「(.*)」$
send:
for v in string.gmatch("%1","[我们,你好,1,abcdefg]") do
   print(v)
end

你说道:「abcdefg」
a
b
c
d
e
f
g

你说道:「我们」
?
?
?
?

所以单纯匹配返回true值还是可以用[]的吧

dtp 发表于 2022-7-4 01:00:19

不要用方括号,用竖线就可以了。

creat 发表于 2022-7-4 08:07:07

shenji 发表于 2022-7-4 12:41 AM
但是还是成功匹配了,什么情况下会出错呢,或者说这样有啥隐患?

我试了一下:


简单的说,[]只适合字母和半角符号
如果没有充分的理解,那么在ansi编码的中文处理中不要用,不要用,不要用

jarlyyn 发表于 2022-7-4 08:32:28

shenji 发表于 2022-7-4 12:41 AM
但是还是成功匹配了,什么情况下会出错呢,或者说这样有啥隐患?

我试了一下:


当你了解了什么是gbk,什么是utf8,什么是ansic
一个中文到底可能是几位后。
欢迎你和我一起对lua骂 mmp

lua本身不是用来处理文字的,这是它弱项。
页: 1 [2]
查看完整版本: 求教,能否在string.find()的第二个参数中实现“或”运算