I am new to the Lua library, I have one use case which I have to remove on a specific parameter and its value: for example:
String 1 : ?xyz=true&toekn=4234dadsasda
String 2 : ?toekn=4234dadsasda&test=pass
Need output like this after removing token and its value
String 1 : ?xyz=true
String 2 : ?test=pass
I have tried the below Lua gsub function but no luck:
string.gsub(args, "token=.*", " ")
any help apricated, thanks
You may want to considers additional conditions (using & and ; as separators[1]) and corner cases (trailing separators and substrings with token):
text:gsub("([&;]?)%f[%a]token=[^&;]+([&;]?)",
function(s1, s2) return s1 and s2 and #(s1..s2) > 1 and s1 or "" end)
This solution works correctly on query strings that include parameters like subtoken and that use ; as separators. The template is using %f[%a], which is a frontier pattern that describes a zero-length boundary where non-letter changes to a letter (this includes the first character in a string).
[1] W3C recommends that all web servers support semicolon separators in addition to ampersand separators to allow application/x-www-form-urlencoded query strings in URLs within HTML documents without having to entity escape ampersands (wikipedia article on query string).
If you can only have two query params and no more than two as shown in your input you can use
text:gsub("&?token=[^&]+&?", "")
Or, if you have multiple query params, you can use
text:gsub("([&?])token=[^&]+&?", "%1"):gsub("(.*)&$", "%1")
See the online Lua demo #1 and the online Lua demo #2.
Details:
&? - an optional &token= - a literal string[^&]+ - one or more chars other than &&? - an optional & char.In the second solution, :gsub("([&?])token=[^&]+&?", "%1") replaces the match with either ? or & before the token, and the next gsub("(.*)&$", "%1") removes the & at the end of string in case the param occurs at the end of string.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With