![Игнорировать часть [^\\] в шаблоне Lua](https://rvso.com/image/400274/%D0%98%D0%B3%D0%BD%D0%BE%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%87%D0%B0%D1%81%D1%82%D1%8C%20%5B%5E%5C%5C%5D%20%D0%B2%20%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B5%20Lua.png)
Я хочу найти с помощью lua-функций, но только если перед char char $
нет . Для этого я создаю шаблон:\
char $
([^\\]?)%$
Однако Lua игнорирует первую часть моего шаблона и находит только %$
. Пожалуйста, помогите мне решить мою проблему.
Да, я знаю, что у lua очень плохой парсер шаблонов, но я надеюсь, что смогу узнать, $
является ли это первым символом строки или его не было \
до этого. Большое спасибо за помощь.
решение1
Ваш вопрос очень неясен, и здесь не задействованы регулярные выражения (шаблоны Lua существенно отличаются от регулярных выражений).
Но я думаю, что вы ищете что-то вроде этого, что печатает строку, содержащую \$
и , $
а затем печатает ее с \$
по-прежнему нетронутой, но замененной без кавычек $
.
z="aaa \\$ $ x=1$"
print(z)
tmp=string.gsub(z,'\\%$', 'QUOTEDOLLAR')
tmp=string.gsub(tmp,'%$', '!!!')
newz=string.gsub(tmp,'QUOTEDOLLAR', '\\$' )
print(newz)
выполнение этого с помощью texlua
создает вывод терминала
aaa \$ $ x=1$
aaa \$ !!! x=1!!!