Regex help

Uri Guttman uri at stemsystems.com
Fri Apr 20 22:36:33 BST 2012


On 04/20/2012 11:29 AM, Simon Wistow wrote:

>
>  just fine. However I'm trying to add a new opcode DAT which can take any
>  number of operands
>
>      DAT 0x170, "Hello ", 0x2e1 (, ....)
>
>  and it fails there.
>
>  Running this
>
>  my ($label, $op, @operands) = $line =~ m!
>       ^
>       (?::(\w+)      \s+)? # optional label
>       ([A-Za-z]+)    \s+   # opcode
>       ([^,\s]+) (?:, \s+   # operand
>       ([^,\s]+))*    \s*   # optional second opcode
>       $
>  !x;
>
>  on
>
>       FOO A, B, C
>
>  results in @operands being ('A', 'C');
>

i would take a simpler approach. just grab the whole optional string
after the opcode (all the operands) and then split that on comma (and
optional trailing whitespace). why try to do it all in one regex when
that is simpler and should work fine. so your last regex component would
be something like \s*(.+)? or \s*(.*)

uri








More information about the london.pm mailing list