我有一条线
if (($x > 0) && ($flag == 1))
我想用冒号 (:) 替换最后一个“)”。所以它变成了
if (($x > 0) && ($flag == 1):
我尝试使用 $line =~ s/\)$/\:/;
但它不起作用
任何帮助,将不胜感激
以下应将最后一个替换)
为:
:
$line =~ s/\)([^)]*)$/:$1/;
您正在寻找的正则表达式是
$line =~ s/.*\K\)/:/;
如果您使用strict和warnings,如果之前没有声明过在 $line 中使用变量,您可能会遇到问题。您应该阅读Perl 正则表达式。
行尾可能有空格(例如换行符)(除非您已明确删除它),因此以下正则表达式应该可以解决问题(同时保留换行符):
$line =~ s/\)(\s*)$/:$1/;