【发布时间】:2012-11-08 21:11:38
【问题描述】:
我需要从一个较大的字符串中检测出一个单词说 john,说 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
【问题讨论】:
-
你想达到什么目的?
-
@lhf 我要问的模式将用于从大字符串中查找字符串“john”或“john”的修改变体。这有意义吗?我也更新了问题!
标签: string lua lua-patterns