in reply to Re^3: Regex - Matching prefixes of a word
in thread Regex - Matching prefixes of a word
I'm not sure I follow where you're coming from when you say '...put regex code that says that "10speed" isn't valid into each command "regex"...'
The idea is that if the regex matches the string, then I immediately know that the command is a $verb, with parameters $1, $2, $3, $4 etc, and can pass that right along with one function call. Only if I can't recognize anything, does the doctor prompt you to use the help command. I'm not trying to filter anything out, just to figure out what they meant as best I can without too much effort. The regex are generous with matching, although the parameters extracted are subject to more scrutiny, and nothing dangerous is actually done with the data in the end.
I've got just 39 lines, covering 16 types of command and the various ways to say them.
Example snippet from the fire command. I plan to compact the 'all X' vs 'X (all)?' vs 'X Indexes' into a single alternation that I can reuse as a '$componentSelection' but after I've gotten these gunners to shoot in the right direction.
PS: I'll add 'replace "\s+" with "\s*" where not required' to the list, so you can punch in things like "angle45dispersion15" and "speed10". Since the pieces of that parameter subsection are known to be alpha-only and number-only, there is no ambiguity. Spaces required, only where required.# FIRE!!! $cmd =~ /^$regexSubstringOf{fire}\s+$regexName(?:\s+(all))?\s* +$/i ? setCommand($player, 'fire',[] , $1, 'all') : $cmd =~ /^$regexSubstringOf{fire}\s+(all)?\s+$regexName\s*$/i +? setCommand($player, 'fire',[] , $2, 'all') : $cmd =~ /^$regexSubstringOf{fire}\s+$regexName$regexIndexes\s* +$/i ? setCommand($player, 'fire',[] , $1, $2) :
|
|---|