有人可以帮我纠正以下代码吗? 我想从输入字符串中提取两个数字。
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
问候
答案 0 :(得分:7)
[
和]
是正则表达式元字符,所以你必须逃避它们
($max, $min) = $_ =~ /\[(\d+):(\d+)\]/;
括号用于表示与其中的字符匹配的字符类:[ ... ]
,例如[abc]
匹配a
。
答案 1 :(得分:0)
TLP是正确的。
[]
是元字符,任何此类字符都需要转义为。 () [] *
等将其用于文字匹配。
这可以解决您的问题。
($max, $min) = $_ =~ /\[(\d+):(\d+)\]/;
如果$max
或$min
或两者都为空,即[ 7: ]
或[ : ]
或[ : 2]
或[ ]
,您可能会收到警告。