正则表达式不起作用,至少在命令行中

时间:2014-03-06 22:30:02

标签: regex perl cmd

我有正则表达式:

($value) = $line =~ /\ABC(.+?)\#/;

输入,例如:

(32321213321)ABC 24432.232 #Junk

这意味着要记住FD和#之间的数字。

当我通过命令行运行它时,它返回一个空格。通过Padre,它返回一个空格+ #之前的数字。

正则表达式有问题吗?

2 个答案:

答案 0 :(得分:3)

在你的正则表达式中,你逃脱了A。然后它成为转义序列an assertion \A以匹配字符串的开头。同一转义的另一个版本是^。并且你的字符串不会从那里开始,因此正则表达式无法匹配。在#之前,您还有另一个冗余转义。你需要的正则表达式是

/ABC(.+?)#/

答案 1 :(得分:2)

您可以使用:

$line =~  /ABC *([0-9 ]+?) *#/;

或更好:

$line =~  /ABC *(\d+(?: \d+)*) *#/;