我有以下字符串:
Data 250 MB
Data 1.5 GB
Data 10 GB
我只需要捕获值
250 MB, 1.5 GB, 10 GB
.所以我写了表达式(my $data) = $str1 =~ /Data (\S+ GB|MB)/ or die "$str1\n";
这适用于以 GB 为单位的数据,但对于 MB,我得到结果
Data 250 MB
.任何人都可以请解释为什么?
最佳答案
交替运算符不对单词进行操作,这意味着
(\S+ GB) or (MB)
添加非捕获括号:
/Data (\S+ (?:GB|MB))/
您可以使用字符类进一步简化:
/Data (\S+ [GM]B)/
关于regex - Perl 正则表达式交替,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33696667/