WHolcomb has asked for the wisdom of the Perl Monks concerning the following question:
which represents a # not followed by an odd number of \'s (since \\# is the \ character metaquoted followed by a comment) but that didn't work becasue ^ only represents single characters and not sets of characters. I then tried the perl 5.005 negative lookbehind (?<!) but it only allows fixed width lookbehinds and I want to allow any number of \'s. Currently I am doing:s/([^(?:([^\\]|\A)\\(\\{2})*\#)]*)(.*)/$1/
Can anyone suggest a regex to do all that work? I remember seeing one to correctly parse a C string somewhere which would deal with these same issues, but hard as I look I cannot find it.split /\Q#\E/; $_ = $_[0]; if(/\A\s*\Z/) { next; } $string = $_; for($i = 1; $i <= $#_; $i++) { $_ = $_[$i - 1]; m/(.)((\\){2})*\Z/; if("$1" eq "\\") { $string .= "\#" . $_[$i]; } else { last; } }
Will
Originally posted as a Categorized Question.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: How do I write a regex which allows meta-quoting?
by WHolcomb (Initiate) on Apr 13, 2000 at 19:39 UTC |