Perl:从字符串中提取多个数字

时间:2014-02-06 05:19:54

标签: regex perl

有人可以帮我纠正以下代码吗? 我想从输入字符串中提取两个数字。

  input string [7:0] xxxx

我想要' 7'和' 0'加载到两个变量(最小和最大)。 我试图通过

实现这一目标
my ($max, $min);
($max, $min) = $_ =~ /[(\d+):(\d+)]/;
print "min: $min max $max\n";

我的结果是

Use of uninitialized value in concatenation (.) or string at constraints.pl line 16, <PH> line 165.
min:  max: 1

问候

2 个答案:

答案 0 :(得分:7)

[]是正则表达式元字符,所以你必须逃避它们

($max, $min) = $_ =~ /\[(\d+):(\d+)\]/;

括号用于表示与其中的字符匹配的字符类:[ ... ],例如[abc]匹配a

答案 1 :(得分:0)

TLP是正确的。 []是元字符,任何此类字符都需要转义为。 () [] *等将其用于文字匹配。 这可以解决您的问题。

($max, $min) = $_ =~ /\[(\d+):(\d+)\]/;

如果$max$min或两者都为空,即[ 7: ][ : ][ : 2][ ],您可能会收到警告。