perl 匹配嵌套括号问题

text:
(1+2(123+(888)3)ddf)wwww(sdf(sdfdsf)gggg)
Match:
1+2 123+ 888 3 ddf sdf sdfdsf gggg

匹配代码:

#!/usr/bin/perl
use strict;
use warnings;
use re ‘eval‘;
my $str= ‘(1+2(123+(888)3)ddf)wwww(sdf(sdfdsf)gggg)‘;
my @arr;
my $re = qr/(?{local $a=0})(?>(?:([^()]+)(?{push @arr,$1})|
#将匹配到得内容push到@arr
#固化分组,减少回朔。
\((?{$a++})|
#遇到开括号$a+1
\)(?(?{$a!=0})(?{$a--})|
#如果$a不等于0则遇到闭括号$a-1
(?!)))*)(?(?{$a!=0})(?!))/x;
# 否则继续匹配,如果继续遇到$a不等于0 继续匹配到行尾
1 while($str =~ /\($re\)/g);
print join("\n",@arr);
时间: 2024-11-10 05:30:39

perl 匹配嵌套括号问题的相关文章

Java/Js下使用正则表达式匹配嵌套Html标签

转自:http://www.jb51.net/article/24422.htm 以前写过一篇文章讲解如何使用正则表达式完美解决Html嵌套标签的匹配问题(使用正则表达式匹配嵌套Html标签),但是里头用到了平衡组这样的高级特性,貌似只有DotNet还有Perl正则引擎支持,因此通用性不高. 通用 HTML 标签区配正则 最近看网站日志,发现有人在博客上转了我不知道几年前写的一个匹配 HTML 标签的正则,刚好最近也在做一些相关的事情,顿时来了兴趣.就拿回来改改,成了下面这样,可能会有一些 ca

UVALive 2056 Lazy Math Instructor(递归处理嵌套括号)

因为这个题目说明了优先级的规定,所以可以从左到右直接运算,在处理嵌套括号的时候,可以使用递归的方法,给定每一个括号的左右边界,伪代码如下: int Cal(){ if(括号)  sum += Cal(); else sum += num; return sum; } 但是这个题目着实坑了我一下,见过WA了,没见过TLE呢……我因为没有看到有空格这个条件,无线TLE,又是消除函数又是改用数组模拟栈,其实就是读入出错和忘记了处理空格,改了之后,成功AC了.代码如下: #include<iostrea

PHP正则表达式匹配嵌套HTML标签的方法和技巧

转载请注明出处:http://blog.csdn.net/donglynn/article/details/35788879 正则表达式是一个非常有用的编程技能.一般来说,简单的抓取一个HTML页面的某一条信息,比如<title>标题</title>,是很容易实现的.但是,我们往往要抓取某一个列表页面里的多个重复的<div></div>块里的特定内容,并且<div></div>块还有嵌套的使用,我们抓取的则是每个重复<div&g

[转]使用正则表达式匹配嵌套Html标签

原文链接 https://msdn.microsoft.com/zh-cn/ff686933.aspx 本文来自Kevin Yang博客 作者:Kevin Yang 概述 正则表达式是做文本解析工作必不可少的技能.如Web服务器日志分析,网页前端开发等.很多高级文本编辑器都支持正则表达式的一个子集,熟练掌握正则表达式,经常能够使你的一些工作事半功倍.例如统计代码行数,只需一个正则就搞定.嵌套Html标签的匹配是正则表达式应用中一个比较难的话题,因为它涉及到的正则语法比较多,也比较难.因此也就更有

(转)PHP正则表达式匹配嵌套HTML标签的方法和技巧

正则表达式是一个非常有用的编程技能.一般来说,简单的抓取一个HTML页面的某一条信息,比如<title>标题</title>,是很容易实现的.但是,我们往往要抓取某一个列表页面里的多个重复的<div></div>块里的特定内容,并且<div></div>块还有嵌套的使用,我们抓取的则是每个重复<div></div>块里的多个信息.同时,网页源文件不同于一般的字符串,其还存在大量的回车.换行和制表符,这些都造成了

正则匹配嵌套HTML

一,匹配单一的嵌套标签 <div>我是一层</div><div>   <div class="test">  我是二层div   <div class="test">我是三层div</div>   </div></div> 在Regex Tester中测试结果: <div[^>]*>[^<]*(((?'Open'<div[^>]*>

匹配尖括号里的内容

正则表达式 1 (?<txt>(?<=<).+(?=>))

1.3.匹配小括号的字符(可能有小括号在一行的,也有多行的)

web_url("eview.widgets.windows.js", "URL=httos://11.12.205.36:9143/prrtal/themes/default/componets/eview/js/eview.widgets.windown.js" "Resourse=1", "Snapshot=t147.inf", LAST); web_concurrent_end(NULL); web_add_auto_

c# 正则匹配对称括号

https://stackoverflow.com/questions/7898310/using-regex-to-balance-match-parenthesis 原文地址:https://www.cnblogs.com/gaocong/p/9996725.html