in reply to Re: Matching nested begin/ends
in thread Matching nested begin/ends
It matches strings that shouldn't be matched.#!/usr/bin/perl use strict; use warnings 'all'; use vars qw /$re/; $re = qr /begin (?: (?>[^be])* |(??{ $re }) | [be] )* end/x; sub pass {local $_ = shift; print /^$re$/ ? "ok\n" : "not ok: $_\n"} sub fail {local $_ = shift; print ! /^$re$/ ? "ok\n" : "not ok: $_\n"} pass 'begin end'; fail 'begin en'; fail 'begin nd'; pass 'begin begin end end'; pass 'beginend'; pass 'beginbeginbeginendendend'; pass 'begin begin end begin begin end begin end end end'; fail 'begin begin end begin egin end begin end end end'; fail 'begin end begin end'; __END__ ok ok ok ok ok ok ok not ok: begin begin end begin egin end begin end end end not ok: begin end begin end
Abigail
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Matching nested begin/ends
by jryan (Vicar) on Aug 01, 2002 at 23:16 UTC | |
by Abigail-II (Bishop) on Aug 02, 2002 at 09:30 UTC | |
by jryan (Vicar) on Aug 02, 2002 at 23:04 UTC | |
by Abigail-II (Bishop) on Aug 05, 2002 at 10:08 UTC |