regex - 用正则表达式分别计算每个数字?
问题描述
我的代码如下所示:
#!/usr/bin/perl
use strict;
use warnings;
my @list = <>;
chomp(@list);
my @matches =grep /^\d+(,\d+)*$/, @list;
if (@matches>0)
{
print scalar @matches . "\n";
}
else {
}
输入是这样的:
sd 45
gdfg 34
fg dfg 345 df
然后它应该打印7
但它打印3
我应该如何更改正则表达式以分别计算整数?
解决方案
要将所有数字作为单个元素捕获,您可以:
my @matches = map /([0-9])/, @list;
如果您只想捕获完全是数字的行的数字,您可以添加一个 grep:
my @matches = map /([0-9])/, grep /^[0-9]+\z/, @list;
推荐阅读
- javascript - 使用 JavaScript 定位没有选择器的标签元素
- javascript - 选择 js 中断选项和重复输入
- c - 算术级数系列的输出在 C 中不正确
- html - 如何让 display:grid(或 ms-grid)在 Internet Explorer 11 中工作?
- python - sqlalchemy @hybrid_property v @property,@hybrid_method v @classmethod
- javascript - 如何在 React 中访问 if 语句中的常量
- reactjs - Reactjs onChange 事件返回元素而不是对象
- r - 如何在ggplot中添加多元线性回归线?
- r - R导入所有列作为文本的大型数据集
- php - 我存储上传的图像未显示 PHP Laravel