如果我的问题听起来有点尴尬,请原谅我。我正在寻找一个正则表达式,它将替换perl源文件中的行号,而不会影响分配给标量的值。
我认为下面的内容会让我的问题更加清晰。假设我有一个perl源代码,如下所示:
1. $foo = 2.4;
2. print $foo;
我想要一个正则表达式来替换这些行号(1. 2. etc..)
而不影响分配给标量的值,因此在这种情况下$foo
。
由于
答案 0 :(得分:5)
将正则表达式锚定到行的开头:
删除数字:
perl -p -i.bak -e's{^\d+\. }{}' myperl
答案 1 :(得分:4)
在perl正则表达式中,您可以使用插入符号^
来表示行的开头。 $
表示一行的结尾。这些被称为锚。
所以要在一行的开头(仅限)找到一个数字\d
,你可以搜索
/^\d+/
如果你想删除这些数字,你可以“替换”它们,如
s/^\d+//g
您还希望在数字后面加上点,这样您就可以尝试 ;
/^\d+./
但是在正则表达式中,一个圆点表示“任何字符”,因此您需要转义点以使其按字面解释
/^\d+\./
插入符号^
也在字符集中起双重作用(它否定了它们),我只提到它,因为它是学习正则表达式时混淆的常见原因。
/[^\d]/ # Match characters that are not digits