Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Regex Tester

by sutch (Curate)
on Mar 05, 2003 at 15:34 UTC ( [id://240601]=sourcecode: print w/replies, xml ) Need Help??
Category: Misc
Author/Contact Info sutch
Description: After over a year away from Perl (doing PHP coding), I'm happy to start using Perl again. I just put this script together to help another developer test regular expressions.

Comments are welcome.

#!/usr/bin/perl -w
# script to test regular expressions.

use strict;

# assign the regular expression
my $re = qr/^(\$-|-\$|\$)(\d+|(\d*\.\d\d))$/;

# assign valid strings
my @valid = (
  '$1',
  '$1.11',
  '$.11',
  '-$1',
  '-$1.11',
  '-$.11',
  '$-1',
  '$-1.11',
  '$-.11',
);

# assign invalid strings
my @invalid = (
  '',
  '$',
  '$1.1',
  '$1.111',
  '$.1',
  '$.111',
  '-',
  '-$',
  '-$1.1',
  '-$1.111',
  '-$.1',
  '-$.111',
  '$-',
  '$-1.1',
  '$-1.111',
  '$-.1',
  '$-.111',
);

# leave alone
my $mismatches = 0;
foreach my $valid (@valid) {
  if ( $valid !~ $re ) {
    print "valid string doesn't match: $valid\n";
    $mismatches += 1;
  }
}
foreach my $invalid (@invalid) {
  if ( $invalid =~ $re ) {
    print "invalid string does match: $invalid\n";
    $mismatches += 1;
  }
}
print "$re had $mismatches mismatches with the " . (0 + @valid + @inva
+lid) . " test cases\n";
Replies are listed 'Best First'.
Re: Regex Tester
by hiseldl (Priest) on Mar 06, 2003 at 03:32 UTC
Re: Regex Tester
by perlguy (Deacon) on Mar 06, 2003 at 08:36 UTC
    why not make your code a little bit more readable (and a bit more perl-ish), by changing this:
    # assign valid strings my @valid = ( '$1', '$1.11', '$.11', '-$1', '-$1.11', '-$.11', '$-1', '$-1.11', '$-.11', );
    to something like this, using the qw() operator:
    # assign valid strings my @valid = qw( $1 $1.11 $.11 -$1 -$1.11 -$.11 $-1 $-1.11 $-.11 );
    Of course, if you ever have any spaces in your future tests, this goes mostly out the window, but since your strings seem to fit just fine, I would say it will be a little easier to read and maintain. So long as no one reads the $- and $1 as variables, you should be good to go.
Re: Regex Tester
by Aristotle (Chancellor) on Mar 09, 2003 at 04:35 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://240601]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2024-04-19 02:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found