首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以使用正则表达式指定要与值进行比较的数组的索引吗?

可以使用正则表达式指定要与值进行比较的数组的索引吗?
EN

Stack Overflow用户
提问于 2020-12-09 01:06:06
回答 2查看 58关注 0票数 0

下面是我想要做的一个小例子

代码语言:javascript
复制
#!/usr/bin/perl
$nums = "a,b,c,1,2,3";
@arr = split(",", $nums);

# If the contents of indexes 3 through 5 all match the correct syntax (any integer), print the message
if($arr[/^[3-5]{1}/] =~ /^[0-9]+/ ) {
     print "Those elements in this array are all numbers";
}else{
     print "\nsome of those elements are not numbers"
}

这是否可以测试元素3到5是否都是整数?

EN

回答 2

Stack Overflow用户

发布于 2020-12-09 01:24:29

那行不通的。/^[3-5]{1}/将根据$_的值返回01,因此它只会检查$arr[0]$arr[1]

你可以使用

代码语言:javascript
复制
all { arr[$_] =~ /^[0-9]+\z/ } 3..5

代码语言:javascript
复制
all { /^[0-9]+\z/ } @arr[3..5]

all由List::Util提供。这可以改为使用grep

代码语言:javascript
复制
!grep { arr[$_] !~ /^[0-9]+\z/ } 3..5

代码语言:javascript
复制
!grep { !/^[0-9]+\z/ } @arr[3..5]
票数 4
EN

Stack Overflow用户

发布于 2020-12-10 10:40:41

循环遍历感兴趣的数组元素,并在第一个非数字上删除标志,然后输出结果

代码语言:javascript
复制
use strict;
use warnings;
use feature 'say';

my $nums = 'a,b,c,1,2,3';
my @arr  = split ',', $nums;
my $flag = 1;                   # Lets assume that all elements are numbers

for my $element ( @arr[3..5] ) {
    $flag = 0 && last if $element !~ /^\d+/;
}

say $flag ? "all elements are numbers" :"not all elements are numbers";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65203518

复制
相关文章

相似问题

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