Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Match nested parens of arbitrary depth in 56 characters

by dchetlin (Friar)
on Oct 29, 2000 at 02:07 UTC ( #38942=snippet: print w/ replies, xml ) Need Help??

Description: This code is neither robust nor efficient nor general. But it's short and fun. Making it any of those things is not difficult, but it won't be do-able in 56 chars.

It doesn't deal with escaped or quoted parens -- i.e. they are treated like any other. It doesn't deal with nulls in the input very well, to make it do that would cost 3 extra chars. It doesn't let you know where you're unbalanced, but simply prints `1' if the input is balanced and prints nothing if it's not. Oh, and it requires 5.6.0 or better.

Give it a filename to check for balancing on the command line, or run it as shown below exactly and give it text to check on standard input.


perl -n0e'$r=qr/(?>[^()]*)|\((??{$r})+\)/;print/^$r*$/'
Comment on Match nested parens of arbitrary depth in 56 characters
Download Code
40 characters, works even in Perl4
by I0 (Priest) on Dec 18, 2000 at 11:16 UTC
    perl -p0e 'tr/()//cd;eval{/$_/};$_=!$@'
      perl -p0e'y/()//cd;eval{/$_/};$_=!$@'

Back to Snippets Section

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (15)
As of 2014-07-10 20:58 GMT
Find Nodes?
    Voting Booth?

    When choosing user names for websites, I prefer to use:

    Results (216 votes), past polls