【问题标题】:Search and replace a special character in perl在 perl 中搜索和替换特殊字符
【发布时间】:2020-11-02 13:56:35
【问题描述】:

我想搜索一个字符并用一个字符串替换它。首先,我搜索“:”并将其替换为“to”。接下来我要搜索“$”并将其替换为“END”。这是我尝试过的代码。在下面的代码中,它适用于第一个字符,但不适用于第二个字符。我尝试使用反斜杠来转义特殊字符'$',但它仍然不起作用。我还能做什么?

$string = "[9:8],
if ($string =~ /^.*:+/){
   $stringreplaced =~ s/:/to/g;
}

elsif ($string =~ /^.*\$+/){
   $stringreplaced =~ s/\$/END/g;
}

【问题讨论】:

  • 你不需要if/elseif 只需$string =~ s/\$/END/g;

标签: regex perl


【解决方案1】:

首先,您发布的代码甚至没有编译,但您说它确实运行了。仅发布您已运行的代码。

其次,您正在匹配错误的字符串。您正在检查$string 是否包含该字符,但您替换了$stringreplaced 中的字符。始终使用use strict; use warnings;。这会发现这个错误。

第三,您只检查字符(:$)是否在第一行。这是因为. 不匹配没有/s 的换行符。

最后,你只检查字符串是否包含$,如果它不包含:,因为你使用了elsif

您只需要以下内容:

$string =~ s/:/to/g;
$string =~ s/\$/END/g;

【讨论】:

  • 很抱歉代码不完整。这个问题只涉及我的一部分工作,因此在这里发布所有内容可能不是一个好主意。您的回答非常有帮助,因为我现在知道我的搜索模式是正确的。
猜你喜欢
  • 2011-04-23
  • 1970-01-01
  • 2011-05-12
  • 2011-01-04
  • 1970-01-01
  • 2015-10-03
  • 2021-07-11
  • 2015-04-29
相关资源
最近更新 更多