我想使用正则表达式查找类似,--#
(其中#是任何数字)的字符串,并用,+#
(其中#是先前匹配的数字)替换它们。
我可以提出查找部分。 /(\,--\d)/g
查找我要查找的文本。但是我找不到使用正则表达式替换它的方法。
答案 0 :(得分:3)
您需要使用s
(替代)运算符,而不仅仅是正则表达式。正则表达式可以让您查找文本; s
将让您查找和替换。
第一部分是匹配所需内容的模式,第二部分是 string ,它将替换匹配的 all 。如果需要在一行中多次匹配,请添加g
(全局)后缀。
$line =~ s/,--(\d+)/,+$1/g;
这将找到每个,--
后跟一个或多个数字(由$1
中的括号捕获),并替换字符串,+$1
,该字符串将捕获的数字插入到字符串中。 / p>
如果,--
在除此以外的其他任何情况下都没有出现,则可以消除捕获数字的需要,而只需替换字符串即可:
$line =~ s/,--/,+/g;
编辑:如果“查找”字符串始终仅是一位数字,则您不需要\d+
; \d
会捕获一位数字。我习惯于假设在某些情况下我需要捕获一个整数,而不仅仅是一个数字。
再次编辑:阐明正则表达式是朝着正确方向迈出的一步,但是替换是执行“查找并替换”操作的方式。