首页 > 解决方案 > Perl:请求改进我的 REGEX(仅与正/负整数/小数和逗号匹配)

问题描述

很难描述我会做什么。所以我举个例子。

我的字符串:

my $string = q(
min_entry = -0.236, 0, 0.236 , 0.382, 0.500, 0.618, 0.764
max_entry=0.236, 0.382, 0.500, 0.618, 0.764, 1.000
#jakis komentarz
rsi_confirm= 25,27,30, 32
slope3 = 0.236, 0.382, 0.5, 0.764
min_tp=0.0125 , 0.0236, 0.0382, 0.05, 0.0764, 0.1
interval = 14

[thresholds]
low = 40
high = 40
persistence = 9

我的匹配模式:

my @match = $string =~ /(([\d-\.]+[, ]+)+[\d-\.]+)/sg;
print Dumper \@match;

我的结果:

$VAR1 = [
          '-0.236, 0, 0.236 , 0.382, 0.500, 0.618, 0.764',
          '0.618, ',
          '0.236, 0.382, 0.500, 0.618, 0.764, 1.000',
          '0.764, ',
          '25,27,30, 32',
          '30, ',
          '0.236, 0.382, 0.5, 0.764',
          '0.5, ',
          '0.0125 , 0.0236, 0.0382, 0.05, 0.0764, 0.1',
          '0.0764, '
        ];

我不知道为什么或如何在我的正则表达式中添加索引为 1(value '0.618, ',), 3 (value '0.764, ',), 5, 7, 9 的元素。但我不需要它。

我想达到的结果:

print Dumper \@match;
$VAR1 = [
          '-0.236, 0, 0.236 , 0.382, 0.500, 0.618, 0.764',
          '0.236, 0.382, 0.500, 0.618, 0.764, 1.000',
          '25,27,30, 32',
          '0.236, 0.382, 0.5, 0.764',
          '0.0125 , 0.0236, 0.0382, 0.05, 0.0764, 0.1',
        ]

请根据我的正则表达式回答。唯一重复的字符串标识字符是“=”或“=”(在模式之前)和“,”(在模式的中间)

标签: regexperl

解决方案


你有两个括号组,一个在另一个里面。内在的每秒钟产生一次结果。您应该为内部分组使用非捕获组


推荐阅读