我有正则表达式:
($value) = $line =~ /\ABC(.+?)\#/;
输入,例如:
(32321213321)ABC 24432.232 #Junk
这意味着要记住FD和#之间的数字。
当我通过命令行运行它时,它返回一个空格。通过Padre,它返回一个空格+ #
之前的数字。
正则表达式有问题吗?
答案 0 :(得分:3)
在你的正则表达式中,你逃脱了A
。然后它成为转义序列an assertion \A
以匹配字符串的开头。同一转义的另一个版本是^
。并且你的字符串不会从那里开始,因此正则表达式无法匹配。在#
之前,您还有另一个冗余转义。你需要的正则表达式是
/ABC(.+?)#/
答案 1 :(得分:2)
您可以使用:
$line =~ /ABC *([0-9 ]+?) *#/;
或更好:
$line =~ /ABC *(\d+(?: \d+)*) *#/;