Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Help modifying recursive regex

by Krambambuli (Deacon)
on May 08, 2013 at 16:49 UTC ( #1032640=note: print w/ replies, xml ) Need Help??


in reply to Help modifying recursive regex

Here's a regexp based solution, with minor tweeks on your code:

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; sub strip_paren { my $input = $_[0]; our $re; $re = qr/ ( [^()]+ ) (?: \( ( (?: (??{$re}) )+ )+ \) )? /x; my @output = (); @output = $input =~ /$re/g; return @output; } sub print_crud { print "\nLine: ", shift, "\n"; foreach my $line (@_) { next if not defined $line; print " '$line'\n"; } } while (<DATA>) { chomp; print_crud( $_, strip_paren($_)); } exit; __DATA__ A A B A B C (A B) C A (B) C A (B C D) A(B C D) A (B C D) E A (B C D)E A (B C D) (E F G) A (B C D) (E F G) I A B (C (D E) (F G)) (H I) A B (C (D E) (F G)) (H I) J
I think it comes close to what you wanted.


Comment on Re: Help modifying recursive regex
Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (14)
As of 2014-10-24 17:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (133 votes), past polls