regex - 我可以使用正则表达式来指定要与值进行比较的数组的索引吗?
问题描述
这是我正在尝试做的一个小例子
#!/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 是否都是整数吗?
解决方案
那是行不通的。/^[3-5]{1}/
将返回0
or1
取决于 的值$_
,所以它只会检查$arr[0]
or $arr[1]
。
你可以使用
all { arr[$_] =~ /^[0-9]+\z/ } 3..5
或者
all { /^[0-9]+\z/ } @arr[3..5]
all
由 List::Util 提供。这可以改为使用grep
。
!grep { arr[$_] !~ /^[0-9]+\z/ } 3..5
或者
!grep { !/^[0-9]+\z/ } @arr[3..5]
推荐阅读
- spring - 如何在 Spring Boot 上修复多个 Url
- flutter - Flutter SDK 在 Parallels win10 中得到 Permission denied?
- r - 闪亮的用户驱动过滤器逻辑
- r - 解析长字符串以检索 channel_id
- html - CSS/HTML 中图像上的文本叠加问题
- python - 使用 linprog 最小化平衡单纯形
- javascript - 事件侦听器同时触发 2 个函数但部分触发
- linux - Python - [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1091)
- java - 可以在代码逻辑中添加 try/catch 混乱
- node.js - 请求后端节点应用程序后如何刷新 React 组件?