Re: Regex for balanced brackets?
| From: | David Tulloh | Date: | Tue, 22 Nov 2005 02:15:33 +0000 |
| Subject: | Re: Regex for balanced brackets? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-226249@lists.php.net to get a copy of this message | ||
I think you are doing it wrong, though reading other people's regex easily is a skill I lack.
It is however very possible.
The php manual has a section on recursive regex where it explains how to solve the bracket problem.
http://php.net/manual/en/reference.pcre.pattern.syntax.php#regexp.reference.recursive
I think of recursive regex as creating goto loops, with all the power and problems that come with it.
You will also have to enable the multiline flag for your test data.
David
Jeffrey Sambells wrote:
I came across this method of matching brackets with regex in .NET http://puzzleware.net/blogs/archive/2005/08/13/22.aspx but I am wondering if it is possible to do the same in PHP? I've tried it a bit but I can't seem to get it to work properly. I'm just wondering if I am doing something wrong or if it is just not possible. Thanks. here is the code I was playing with: <?php $pattern = <<<PATTERN \{(?> [^{}]+ | \{ (?P<DEPTH>) | \} (?P<-DEPTH>) )* (?(DEPTH)(?!))\} PATTERN; $subject = <<<SUBJECT test {test2 { test3 }} test4 { } SUBJECT; preg_match_all("/$pattern/ix",$subject,$matches); header("content-type: text/plain; "); var_dump($matches); ?> - Jeff