正则表达式如何匹配字符串中的所有()之间的字符串。
3个回答
展开全部
哎、这个测试好久!在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里面的,其它语言不知道怎么用
[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是个简称可以不写的、直接用//;
发现还是上面答案一样的问题?这个有问题吗,不是结果正确的啊!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"(?<=\()[^()]+(?=\))"
更多追问追答
追问
这个式子我知道,但是只能找到一个,而且中间()需要加转义字符吧……
我用的flex,在表达式后面加g再match的话——(?<=\()[^\(\)]+(?=\))/g ,会出现读取两次第一个()中内容的情况,不知道哪里出了错,请帮忙啊~
追答
有的正则引擎不支持(?<
可能是这种原因吧
我没用过flex
有没有
这种 "\(([^()]+)\)"
取Group1的试一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-05-10 · 知道合伙人教育行家
关注
展开全部
[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里面的,其它语言不知道怎么用
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里面的,其它语言不知道怎么用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询