regex - 简化正则表达式以捕获重复的子组
问题描述
是否可以简化此正则表达式并仍捕获所有组?
my $str = "1 2 3 4 ;";
$str =~ /(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+/;
print Dumper( [$1, $2, $3, $4] );
输出:
$VAR1 = [
'1',
'2',
'3',
'4'
];
我尝试使用量词来简化:
$str =~ /(?:(\d+)\s+){4}/;
但它给出了:
$VAR1 = [
'4',
undef,
undef,
undef
];
解决方案
推荐阅读
- python - 从子流程输出中获取价值
- php - 如何在sql中获取两个给定日期之间的日期
- ruby-on-rails - 为什么捆绑器在寻找 mysql2 -v '0.4.4' --source 'https://rubygems.org/'
- java - java中的泛型方法来总结给定列表中的所有值,无论它是String,int,double
- r - r - 按数据框中的数值过滤字母数字因子列
- spring - Spring MVC 中最好的 HandlerMapping 是什么?
- jquery - fancybox V3 + isotope 排序依据
- vba - 将多个文本框值传输到数组
- php - 替换 HTML 标记内外的文本
- sqlalchemy - 在 Alembic + SQLAlchemy 中使用反射表进行自动迁移