Lua: удалить последний {..} - PullRequest
       21

Lua: удалить последний {..}

0 голосов
/ 05 октября 2018

В строке типа {any {possible} characters}{anything} я хочу удалить last {...} вхождение, которое само по себе может не включать еще одну комбинацию {...}.Нет проблем с поиском последнего { и последующим использованием string.sub.Однако есть короткая команда с сопоставлением с шаблоном, которая удаляет последнюю, например:

str = "{any {possible} characters}{anything}"
print(str:gmatch(...))

следует записать {any {possible} characters}

1 Ответ

0 голосов
/ 05 октября 2018

Вот два возможных решения.

Нет вложенных скобок в конце:

string.gsub('{any {possible} characters}{anything}', '{[^{}]*}$', '')

Здесь {[^{}]*}$ соответствует {, затем любые 0+ символов кроме { и }, а затем символ }, который должен находиться в конце строки ($).

Если в конце есть вложенные фигурные скобки, используйте следующее:

string.gsub('{anything}{any {possible} characters}', '%b{}$', '')

Здесь %b{}$ сопоставляет подстроку {...} с любым количеством вложенных фигурных скобок внутри и затем устанавливает позицию в конце строки с помощью $.

См. это демо Lua

Обратите внимание, что вы можете добавить %s* для соответствия любым 0+ пробелам (это полезно, если есть пробельные символы, например) - '%b{}%s*$'.

...