I’m curious why this doesn’t work, and need to know why/how to work around it; I’m trying to detect whether some input is a question, I’m pretty sure string.match is what I need, but:
print(string.match("how much wood?", "(how|who|what|where|why|when).*\\?"))
returns nil. I’m pretty sure Lua’s string.match uses regular expressions to find matches in a string, as I’ve used wildcards (.) before with success, but maybe I don’t understand all the mechanics? Does Lua require special delimiters in its string functions? I’ve tested my regular expression here, so if Lua used regular regular expressions, it seems like the above code would return "how much wood?".
Can any of you tell me what I’m doing wrong, what I mean to do, or point me to a good reference where I can get comprehensive information about how Lua’s string manipulation functions utilize regular expressions?
Lua doesn’t use regex. Lua uses Patterns, which look similar but match different input.
.*will also consume the last?of the input, so it fails on\\?. The question mark should be excluded. Special characters are escaped with%.As Omri Barel said, there’s no alternation operator. You probably need to use multiple patterns, one for each alternative word at the beginning of the sentence. Or you could use a library that supports regex like expressions.