Lua string.match - сопоставление по необязательным словам в строке - PullRequest
0 голосов
/ 31 января 2019

Мне нужен шаблон Lua для сопоставления, когда в начале строки найдено 1 из 3 точных слов, но я могу найти только онлайн решения, чтобы показать, как сопоставить тип символов, т. Е. Начинается ли он с числа илизнак пунктуации.

Например, следующие строки должны соответствовать шаблону:

  • "player.position"
  • "player.style"
  • "target.width"
  • "enemy.height"

Мы можем предположить, что первое слово будет «игрок», «цель» или «враг», поэтому я могу создать шаблон, который группирует их и сопоставляетесли только 1 из них найден в строке?Остальная часть текста после "."может быть чем угодно.

Я придумал этот шаблон, но с ним много проблем:

local pattern = "[player target enemy]*%..+";

Первая часть может соответствовать любой последовательности символов, заключенной в квадратные скобки, поэтому дляпример "bannana_target_apple.position", используемый с этим шаблоном, вернет "apple.position", потому что "a", "p", "l" и "e" находятся в квадратных скобках в шаблоне.

Спасибо за любыепомощь, которую вы можете оказать.

1 Ответ

0 голосов
/ 31 января 2019

Шаблон Lua для совпадения, когда в начале строки найдено 1 из 3 точных слов:

if ({player=0, target=0, enemy=0})[your_string:match"^(%w+)%."] then 
   ... 
end
...