0
$_ =~ s/\#N\/A//g;

它用 A\ 替换 \3N\ 是 perl 中的这些特殊字符吗?抱歉,我什至不知道如何查找此语法。

4

4 回答 4

5

它正在从字符串中删除 #N/A $_

\#N匹配#N(转义#

\/A匹配/A(转义/

您可以通过更改替换分隔符来简化这看起来的混乱程度:

$_ =~ s|#N/A||g;
于 2013-07-05T18:33:58.583 回答
3

就像 Hunter McMillen 所说,它正在#N/A从默认变量中删除。

但是你可以编写一些更易读、更短的代码:

s!#N/A!!g;
于 2013-07-05T18:35:48.107 回答
1

正如@Hunter McMillen 所提到的,这只是普通的正则表达式替换,特殊字符转义。它可能最好写成

s|#N/A||g

或者

s{#N/A}{}g
于 2013-07-05T18:36:47.183 回答
0

在 Damian Conway 的Perl Best Practices中,为了使正则表达式更具可读性,他建议:

s{ \# N \/ A }{}gmsx;

那是:

  1. 在模式和替换周围使用花括号。
  2. 通过 /x 开关使用空格分隔模式的各个部分。
  3. 反斜杠转义非字母数字字符,即使它们不是元字符。
于 2013-07-05T20:41:16.643 回答