首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在perl中通过受控循环使用regexp

如何在perl中通过受控循环使用regexp
EN

Stack Overflow用户
提问于 2012-12-10 07:36:17
回答 2查看 102关注 0票数 0

我尝试使用perl中的正则表达式将以“1.Virtualization”开头的值grep到"2.Virtualization“。在1.虚拟化和2.数组中的虚拟化之间有大量数据。

我的数组内容示例如下所示。

"1.虚拟化容量管理因性能差而导致的事件数0 999 10 5 4容量计划的生产成本10K 100K 80K 30K 10K计划外购买容量的数量0999 15 10 5 2.虚拟化财务管理因性能差而导致的事件数0 999 10 5 4容量计划的生产成本10K 100K 80K 30K 10K

我如何写一个控制循环,它的grep值介于1和2之间。在1和2之间,它甚至应该grep数据“产能计划的生产成本10K 100K 80K 30K 10K”,并将其放入一个数组位置。

我试着写了一些不能理解如何编写受控循环的代码。有人能帮我解决这个问题吗?

代码语言:javascript
复制
foreach (@array) { 
    if ($_ =~ /\d+\.\s+Virtualization.*/) { #greps values starting in 1. Virtualizaton
         push (@node_level1, "$_");         #stores in the node_level1
    } elsif ($_ =~ /(\%\s+.*)/) {  #greps values beginning with % Number of Nodes 
       # print "$_\n";
    }
}

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-10 08:04:57

使用状态容器:

代码语言:javascript
复制
my $state = 0;

foreach (@array) { 
    if ($_ =~ /1.\s+Virtualization/) {
         $state = 1;
    } elsif (($state == 1) and ($_ =~ /2.\s+Virtualization/)) {
       $state = 0;
    } elsif ($state == 1) {
       push (@node_level1, $_);         #stores in the node_level1
    }
}
票数 0
EN

Stack Overflow用户

发布于 2012-12-10 11:18:45

perl中有一个自动机操作符,它可以做与perreal的答案相同的事情,即flip-flop operator

代码语言:javascript
复制
foreach (@array) { 
    if (/1.\s+Virtualization/../2.\s+Virtualization/) {
       push (@node_level1, $_);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13793047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档