Perl替换正则表达式

时间:2013-12-11 10:47:29

标签: regex perl

file.txt我有这样的一行:

^/string string_to_be_replaced

必须成为:

^/string replaced_string

所以我创建了一个perl脚本:

perl -pi -e "s[\^/string$(.*)$] [\^/string$(.*) replaced_string]" /file.txt

但问题是perl找不到以^/string

开头的行

2 个答案:

答案 0 :(得分:1)

perl -pi -e "s[\^/string .+$][^/string replaced_string]" /file.txt

perl -pi -e "s[\^/string \K.+$][replaced_string]" /file.txt

答案 1 :(得分:1)

正则表达式的第一部分[\^/string$(.)$]查找包含“^ / string”的行,后跟行尾,后跟单个字符(捕获),最后是另一行行结束。由于文件是逐行处理的(一次只查看一行),包含两个行尾的模式永远不会匹配。

你可能想要:

s[\^/string string_to_be_replaced][^/string replaced_string]

假设您只有一个string_to_be_replaced并且只想在string之前替换它。如果没有,那么更多细节将是有用的。