1

我有一条线

if (($x > 0) && ($flag == 1))

我想用冒号 (:) 替换最后一个“)”。所以它变成了

if (($x > 0) && ($flag == 1):

我尝试使用 $line =~ s/\)$/\:/;但它不起作用

任何帮助,将不胜感激

4

3 回答 3

2

以下应将最后一个替换):

$line =~ s/\)([^)]*)$/:$1/;
于 2013-10-04T05:59:21.267 回答
0

您正在寻找的正则表达式是

$line =~ s/.*\K\)/:/;

如果您使用strictwarnings,如果之前没有声明过在 $line 中使用变量,您可能会遇到问题。您应该阅读Perl 正则表达式

于 2013-10-04T03:55:15.640 回答
0

行尾可能有空格(例如换行符)(除非您已明确删除它),因此以下正则表达式应该可以解决问题(同时保留换行符):

$line =~ s/\)(\s*)$/:$1/;
于 2013-10-04T05:52:13.040 回答