Регулярное выражение 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).

640   1  

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

    Ничего не найдено.