Регулярное выражение Lua с ровно одним совпадением
Может ли кто-нибудь помочь мне с lua "regex" ака паттернами?
Как мне перевести это регулярное выражение в шаблон lua для string.match(): ytplayer.configs*=s*({.+?});. Вы можете использовать этот сайт для объяснения того, что делает это регулярное выражение: https://regex101.com/#pcre
По существу, я хочу найти строку, которая начинается с
ytplayer.config = (Обратите внимание на возможные пробелы до и после знака равенства), за которой следует { и до тех пор, пока мы не попадем в точку с запятой. ytplayer.config = {a lot of text, special characters and everything else which is possible...}}; это может быть результатом.
На данный момент у меня есть string.match(s, "ytplayer.config%s=%s({.});") но он возвращает точную копию (проверено с помощью kdiff).
1 ответ:
Посмотрите, это вернет вашу захваченную группу:
print(string.match("ytplayer.config = {a lot of text, special characters and everything else which is possible...}};", "^ytplayer%.config%s*=%s*({.-});"))Вывод:
Регулярное выражение{a lot of text, special characters and everything else which is possible...}}- это
^ytplayer%.config%s*=%s*({.-});. Если вы не хотите проверять начало строки, удалите^из начала.Пожалуйста, смотрите эту демонстрацию.
В образцах Lua,
%escspes "магические символы". Как и*, модификатор-также соответствует нулю или более вхождений символов исходного класса. Однако вместо того, чтобы соответствовать самой длинной последовательности, он соответствует самый короткий.
Comments