Ignore a parte [^\\] no padrão Lua

Ignore a parte [^\\] no padrão Lua

Quero encontrar char $o uso de recursos lua, mas apenas se não houver nenhum \char antes char $. Para isso eu crio o padrão:

([^\\]?)%$

No entanto, Lua ignora a primeira parte do meu padrão e encontra apenas %$. Por favor me ajude a resolver meu problema.

Sim, eu sei que lua tem um analisador de padrões muito ruim, mas espero poder descobrir $se é o primeiro caractere da linha ou se não tem \antes. Muito obrigado pela ajuda.

Responder1

Sua pergunta não é muito clara e não há expressões regulares envolvidas aqui (os padrões Lua são bastante distintos dos regex)

Mas acho que você está procurando algo assim, que imprime uma string envolvendo \$e $depois imprime com os \$ainda intactos, mas todos sem aspas $substituídos.

z="aaa \\$ $ x=1$"

print(z)

tmp=string.gsub(z,'\\%$', 'QUOTEDOLLAR')

tmp=string.gsub(tmp,'%$', '!!!')

newz=string.gsub(tmp,'QUOTEDOLLAR', '\\$' )

print(newz)

executar isso com texluaproduz a saída do terminal

aaa \$ $ x=1$
aaa \$ !!! x=1!!!

informação relacionada