这个替换是做什么的?

时间:2013-07-05 18:32:58

标签: perl

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

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

4 个答案:

答案 0 :(得分:5)

正在删除字符串$_中的#N / A.

\#N匹配#N(转义#

\/A匹配/A(转义/

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

$_ =~ s|#N/A||g;

答案 1 :(得分:3)

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

但是你可以编写更具可读性和更短的代码:

s!#N/A!!g;

答案 2 :(得分:1)

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

s|#N/A||g

s{#N/A}{}g

答案 3 :(得分:0)

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

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

那是:

  1. 在图案周围使用花括号并更换。
  2. 使用空格通过/ x开关分隔图案的各个部分。
  3. 反斜杠转义非字母数字字符,即使它们不是元字符。