如何在Perl中使用正则表达式执行“查找和替换”操作?

时间:2019-01-19 00:26:59

标签: regex perl

我想使用正则表达式查找类似,--#(其中#是任何数字)的字符串,并用,+#(其中#是先前匹配的数字)替换它们。

我可以提出查找部分。 /(\,--\d)/g查找我要查找的文本。但是我找不到使用正则表达式替换它的方法。

1 个答案:

答案 0 :(得分:3)

您需要使用s(替代)运算符,而不仅仅是正则表达式。正则表达式可以让您查找文本; s将让您查找和替换。

第一部分是匹配所需内容的模式,第二部分是 string ,它将替换匹配的 all 。如果需要在一行中多次匹配,请添加g(全局)后缀。

$line =~ s/,--(\d+)/,+$1/g;

这将找到每个,--后跟一个或多个数字(由$1中的括号捕获),并替换字符串,+$1,该字符串将捕获的数字插入到字符串中。 / p>

如果,--在除此以外的其他任何情况下都没有出现,则可以消除捕获数字的需要,而只需替换字符串即可:

$line =~ s/,--/,+/g;

编辑:如果“查找”字符串始终仅是一位数字,则您不需要\d+\d会捕获一位数字。我习惯于假设在某些情况下我需要捕获一个整数,而不仅仅是一个数字。

再次编辑:阐明正则表达式是朝着正确方向迈出的一步,但是替换是执行“查找并替换”操作的方式。