in reply to how can I combine these expressions?
How about this:
This takes advantage of perl's conditional matching operator. From perlre:$str =~ s/(^|[^\%](?:\%\%)*)\% (\{)? # Match and capture 1 or 0 braces ([_a-zA-Z]\w*) (?(2)\}) # If there's anything in $2, match en +ding brace /"$1".$env->{$3}/gex; # $3 now instead of $2 here
(?(condition)yes-pattern|no-pattern) (?(condition)yes-pattern) Conditional expression. (condition) should be either an integer in parentheses (which is valid if the corresponding pair of parentheses matched), or lookahead/lookbehind/evaluate zero-width assertion. Say, m{ ( \( )? [^()]+ (?(1) \) ) }x matches a chunk of non-parentheses, possibly included in parentheses themselves.
|
---|
Replies are listed 'Best First'. | |
---|---|
(Ovid) RE(2): how can I combine these expressions?
by Ovid (Cardinal) on Jul 27, 2000 at 03:47 UTC | |
RE: Re: how can I combine these expressions?
by knight (Friar) on Jul 27, 2000 at 20:29 UTC |
In Section
Seekers of Perl Wisdom