use strict;
my $str = '--------------------must NOT get as id (reseved key words)
/foo/bar/count
/foo/bar/find
--------------------must NOT get as id (not present)
/foo/bar/
--------------------must NOT get as id (not present tab test)
/foo/bar/
--------------------must NOT get as id (not present line break test)
/foo/bar/
--------------------must NOT get as id (not present tab, line break, multiple slashes test)
/foo/bar// /
/
//
--------------------must get as id
/foo/bar/1
/foo/bar/1c
/foo/bar/c1
/foo/bar/sku
/foo/bar/countfind
/foo/bar/findcount
/foo/bar/skucount
/foo/bar/skufind
/foo/bar/countsku
/foo/bar/findsku
/foo/bar/coun
/foo/bar/fin
/foo/bar/ount
/foo/bar/ind
/foo/bar/skucoun
/foo/bar/skufin
/foo/bar/finsku
/foo/bar/counsku
--------------------must get as id (unnecessary slash test)
/foo/bar/1/
/foo/bar/1c/
/foo/bar/c1/
/foo/bar/sku/
/foo/bar/countfind/
/foo/bar/findcount/
/foo/bar/skucount/
/foo/bar/skufind/
/foo/bar/countsku/
/foo/bar/findsku/
/foo/bar/coun/
/foo/bar/fin/
/foo/bar/ount/
/foo/bar/ind/
/foo/bar/skucoun/
/foo/bar/skufin/
/foo/bar/finsku/
/foo/bar/counsku/
--------------------must get as id (unnecessary|invalid slashed test)
/foo/bar///1///
/foo/bar///1c///
/foo/bar///c1///
/foo/bar///sku///
/foo/bar///countfind///
/foo/bar///findcount///
/foo/bar///skucount///
/foo/bar///skufind///
/foo/bar///countsku///
/foo/bar///findsku///
/foo/bar///coun///
/foo/bar///fin///
/foo/bar///ount///
/foo/bar///ind///
/foo/bar///skucoun///
/foo/bar///skufin///
/foo/bar///finsku///
/foo/bar///counsku///';
my $regex = qr~^/foo/bar/+(?:(?:find|count)/*$(*SKIP)(*FAIL)|([^/\r\n\t]+))/*$~mup;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html