Мне нужно определить слово, скажем, джон из большей строки, скажем, джон — хороший человек, поэтому у меня есть этот шаблон, чтобы найти слово
[j][o][h][n]
и используйте его следующим образом:
local pattern = "[j][o][h][n]"
local str = "john is a good man"
print(str:find(pattern))
Чтобы принять, если буквы встречаются несколько раз (например, джухн — хороший человек), я изменяю шаблон следующим образом:
[j]+[o]+[h]+[n]+
Мне нужно игнорировать пробелы (или другие небуквенные символы), которые могут встречаться между словами (например, joh;n is a good man), поэтому я добавляю [^az]* к каждой букве, а шаблон результата
[j]+[^a-z]\*[o]+[^a-z]\*[h]+[^a-z]\*[n]+[^a-z]\*
Теперь это идеально подходит для такого слова, как «джух!н хороший человек». Но если в повторяющейся букве встречается символ !, шаблон не работает. Например, в Джон — хороший человек закономерность не обнаружена. Как изменить шаблон, чтобы добиться этого?
ИЗМЕНИТЬ
Пример:
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
Мне нужен шаблон, который позволит мне обнаружить joo!ohn в сценарии 2