Lua 'plain' string.gsub
gsub, lua, lua-patterns, parsing, string
Solution
Taking from page 181 of Programming in Lua 2e:
The magic characters are:
( ) . % + - * ? [ ] ^ $
The character '%' works as an escape for these magic characters.
So, we can just come up with a simple function to escape these magic characters, and apply it to your input string (`lineB`):
function literalize(str)
return str:gsub("[%(%)%.%%%+%-%*%?%[%]%^%$]", function(c) return "%" .. c end)
end
lineA = "footage/down/temp/cars_[100]_upper/cars_[100]_upper.exr"
lineB = literalize("footage/down/temp/cars_[100]_upper/")
newline = lineA:gsub(lineB, "")
print(newline)
Which of course prints: `cars_[100]_upper.exr`.
Problem
I've hit s small block with string parsing. I have a string like: ``` footage/down/temp/cars_[100]_upper/cars_[100]_upper.exr ``` and I'm having difficulty using gsub to delete a portion of the string. Normally I would do this ``` lineA = footage/down/temp/cars_[100]_upper/cars_[100]_upper.exr lineB = footage/down/temp/cars_[100]_upper/ newline = lineA:gsub(lineB, "") ``` which would normally give me 'cars_[100]_upper.exr' The problem is that gsub doesn't like the [] or other special characters in the string and unlike string.find gsub doesn't have the option of using the 'plain' flag to cancel pattern searching. I am not able to manually edit the lines to include escape characters for the special characters as I'm doing file a file comparison script. Any help to get from `lineA` to newline using `lineB` would be most appreciated.