如何使用perl正则表达式提取最外面括号内的内容?
text =( - (A +(B - C)))
输出= - (A +(B - C))
由于
答案 0 :(得分:2)
可以使用此(\(((?:[^()]++|(?1))*)\))
完成,并且有几个
做到这一点的方法。
( # (1 start), Recursion code group
\( # Opening (
( # (2 start), Capture, inner core
(?: # Cluster group
[^()]++ # Possesive, not parenth's
| # or,
(?1) # Recurse to group 1
)* # End cluster, do 0 to many times
) # (2 end)
\) # Closing )
) # (1 end)
输出
** Grp 0 - ( pos 4 , len 16 )
(-(A + (B - C)))
** Grp 1 - ( pos 4 , len 16 )
(-(A + (B - C)))
** Grp 2 - ( pos 5 , len 14 )
-(A + (B - C))
答案 1 :(得分:1)
我认为不需要任何其他内容
use strict;
use warnings 'all';
my $text = "(-(A + (B - C)))";
my ($result) = $text =~ / \( (.*) \) /x;
print $result, "\n";
-(A + (B - C))
该模式捕获从第一个左括号后到最后一个右括号之前的所有内容。从你的问题来看,我认为不需要检查字符串是否平衡