我的目标是从开始到结束单词提取字符串,(dIonly
是开始,应该是结束工作集[包括这些括号];此外我想将输出打印到名为{的文件中{1}}。
我遇到了lookbehind的问题,因为没有实现变量长度。
现在我扭转了字符串,做了前瞻。但是,有些东西仍无效。
我需要从dIonly开始,这意味着我必须扭转字符串以避免上述问题,因为有很多工作集((在整个字符串中,这意味着我无法从那里开始......) p>
谢谢!我现在编辑了这个脚本。我需要做的是扭转字符串。我通过将带有空格作为分隔符的字符串拆分为列表,然后将其反转,并将其再次放入字符串中来实现。只是在分隔符“解决方案”中再次将其拆分为一个列表,因为我的输出将有几个字符串,我想要提取到工作集(这只有在字符串反转时才有效,否则我会对我不想要的工作集进行处理并且提取一个不同的字符串,因为dIonly是解决方案模式的一个独特部分,我可以从中向前工作到第二个工作集(它本身是第一个带有2个括号的工作集)。然后我想将它打印到新的输出文件。欢迎任何建议!
这是一个数据样本: ......表示它继续
report
等式(符号< = 的内置等式)6< = 40 --->真正 解决方案4(状态31)指出:40个重写:8421在5357394502ms cpu (1464ms真实)(0)重写/秒)G:游戏 - > workset(空)c playA c dIonly c .....
..... maxRiskC(cA, 3)) c workset((RiskCA(cA, 3), RiskCB(cB, 2), maxRiskC(cA, 3))) c RiskCA(cA, 3) c RiskCB(cB, 2)) ***********
答案 0 :(得分:0)
反过来,它会反转字母而不是单个字,对于那个标量。 您可以通过贪婪的比赛来尝试它,因为您只对最后一个工作集感兴趣:
while (my $line = <$input>) {
chomp $line;
if ($line =~ /.*workset(.*dIonly)/) {
# do something with results
say $fh "'$1'";
}
}
如果您在写入文件之前需要撤消,可以执行以下操作:
while (my $line = <$input>) {
chomp $line;
if ($line =~ /.*workset(.*dIonly)/) {
say $fh join " ",reverse (split / /,$1);
}
}