正则表达式如何匹配字符串中的所有()之间的字符串。

如:字符串abc(@a)defghi(@b)aaaaa,如何获取所有()中间的字符串?... 如:字符串abc(@a)defghi(@b)aaaaa,如何获取所有()中间的字符串? 展开
 我来答
徐未知
推荐于2016-02-26 · TA获得超过226个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:203万
展开全部
哎、这个测试好久!在perl里面简直机关重重啊、看结果:
[u@H /billing/user/xufc/pp]$perl
my $line='abc(@a)defghi(@b)aaaaa'; #要用单引号、双引号perl就先给你认为括号里面为空
my @array=($line =~ m/\((.*?)\)/g) ; #语法叫“列表上下文中的m//”,匹配(XX),然后提取出XX
print "@array\n"; #输入完成后、按ctrl+D代表程序结束
@a @b #输出的结果
[u@H /billing/user/xufc/pp]$

这个是perl里面的,其它语言不知道怎么用
更多追问追答
追问
不知那个 ~m 怎么理解,我把后面的部分——/\((.*?)\)/g试了下,发现还是上面答案一样的问题,大概真的是flex自己的问题吧,我在网上也看了一些别的例子,基本上都是会出现这个问题,我试着自己组了一下表达式,也不行……哎……

不过还是谢谢啦!~
追答
~m、这个不是这样的,=~,这个符号代表匹配;后面的m/\((.*?)\)/g,m//这个叫做模式、m是个简称可以不写的、直接用//;

发现还是上面答案一样的问题?这个有问题吗,不是结果正确的啊!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wackyer
2012-09-26 · TA获得超过928个赞
知道小有建树答主
回答量:605
采纳率:71%
帮助的人:387万
展开全部
"(?<=\()[^()]+(?=\))"
更多追问追答
追问
这个式子我知道,但是只能找到一个,而且中间()需要加转义字符吧……
我用的flex,在表达式后面加g再match的话——(?<=\()[^\(\)]+(?=\))/g ,会出现读取两次第一个()中内容的情况,不知道哪里出了错,请帮忙啊~
追答
有的正则引擎不支持(?< 
可能是这种原因吧
我没用过flex
有没有
这种 "\(([^()]+)\)"
取Group1的试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杨柳风83
推荐于2018-05-10 · 知道合伙人教育行家
杨柳风83
知道合伙人教育行家
采纳数:4976 获赞数:114084
2009年大学毕业,10年参加工作,在古浪县新堡初级中学教书

向TA提问 私信TA
展开全部
[u@H /billing/user/xufc/pp]$perl
my $line='abc(@a)defghi(@b)aaaaa'; #要用单引号、双引号perl就先给你认为括号里面为空
my @array=($line =~ m/\((.*?)\)/g) ; #语法叫“列表上下文中的m//”,匹配(XX),然后提取出XX
print "@array\n"; #输入完成后、按ctrl+D代表程序结束
@a @b #输出的结果
[u@H /billing/user/xufc/pp]$

这个是perl里面的,其它语言不知道怎么用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式