我需要从一个更大的字符串中检测出一个单词say john ,say john is a good man 所以我有这个模式来找到这个词
[j][o][h][n]
并按如下方式使用它:
local pattern = "[j][o][h][n]"
local str = "john is a good man"
print(str:find(pattern))
为了接受字母是否出现多次(例如jooohn 是个好人),我将模式修改为
[j]+[o]+[h]+[n]+
我需要忽略单词之间可能出现的空格(或其他非字母字符)(例如joh;n is a good man),所以我将 [^az]* 添加到每个字母,结果模式是
[j]+[^a-z]\*[o]+[^a-z]\*[h]+[^a-z]\*[n]+[^a-z]\*
现在这非常适合像“jooh!n is a good man”这样的词。但如果! 符号出现在重复字母中,则模式失败。例如,在jo!ohn is a good man中,没有检测到模式。我如何修改我的模式以实现这一目标?
编辑
例子:
local str = "jooohn is a good man"
local pattern = "[j]+[^a-z]*[o]+[^a-z]*[h]+[^a-z]*[n]+[^a-z]*"
print(str:find(pattern))
这将打印
1 7
但
local str = "joo!ohn is a good man"
local pattern = "[j]+[^a-z]*[o]+[^a-z]*[h]+[^a-z]*[n]+[^a-z]*"
print(str:find(pattern))
将只打印nil
我需要一个允许我在场景 2中检测joo!ohn的模式