擅长:python、mysql、java
<p>我不确定您到底想得到什么,但是这个perl生成的与Navidad20相同,它依赖于正则表达式。它使用<a href="https://metacpan.org/pod/Regexp::Common" rel="nofollow noreferrer">Regexp::Common</a>模块来获取平衡括号的位置,并使用一个简单的<code>while</code>循环来获取'free'元素的位置。从1开始计数,而不是从0开始计数。在</p>
<p>我不知道它在处理无效数据时会有什么反应。在</p>
<pre><code>#!/usr/bin/perl
use strict;
use warnings;
use Regexp::Common qw /balanced/;
my $seq = '(((((((..((((.....(..)))).((((.........)))).....(((((..)....))))))))))))....';
while ($seq =~ /(?=($RE{balanced}{-parens=>'()'}))/g) {
print 1 + $-[1], ' ', $+[1], " $1\n";
}
my @free;
push @free, [ 1 + $-[0] .. $+[0] ] while $seq =~ /\.+/g;
use Data::Dumper; print Dumper \@free;
</code></pre>
<p>输出为:</p>
^{pr2}$