Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Answer: How do I split a string on highly structured/nested data?

( #28270=categorized answer: print w/ replies, xml ) Need Help??

Q&A > regular expressions > How do I split a string on highly structured/nested data? contributed by merlyn

lhoward's grammar seems unnecessarily complicated. Let's simplify it a bit, as well as grabbing what is needed for the answer (the split items):
use Parse::RecDescent; my $teststr="a,b,op2(c,d),op3(e,op4(f,g))"; my $grammar = q { startrule: list list: <leftop: item ',' item> item: word '(' list ')' <commit> { "$item[1](".join(",",@{$item[3]})." +)" } | word word: /\w+/ }; my $parser = new Parse::RecDescent ($grammar) or die "Bad grammar!\n"; + defined (my $result = $parser->startrule($teststr)) or print "Bad text +!\n"; print map "<<< $_ >>>\n", @$result;
Yes, there it is. $result is an array ref of the split-apart items.

Comment on Answer: How do I split a string on highly structured/nested data?
Download Code
Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (12)
As of 2015-07-03 08:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (49 votes), past polls