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.

# 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) :
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.

In reply to Re^4: Regex - Matching prefixes of a word by SuicideJunkie
in thread Regex - Matching prefixes of a word by SuicideJunkie

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.