【问题标题】:What do these perl regular expression mean?这些 perl 正则表达式是什么意思?
【发布时间】:2014-07-10 21:29:04
【问题描述】:
            chomp();         # Remove the newline. 
            $_ =~ s/\s*//;   # No extra spaces     
            $_ =~ s/\\//;    # Kill any line connector

我对 Perl/regex 不是很熟悉。我正在使用上面的 sn-p 修改现有的 perl 脚本。这段代码删除了换行符、空格和以“\”结尾的行作为连接符。

我的问题是,在下面一行中,两个粗体字符是什么意思?我知道'/ /'之间的任何东西都是正则表达式。但是,

1) '/ /' 前面的 s 是什么意思?

2) 末尾的第二个“/”是什么意思?

在 $_ =~ s/\s* //;

【问题讨论】:

  • s 用于替换找到的子字符串。 / 划分命令部分。如果有帮助:s/..要寻找什么../..用什么来替换找到的/
  • $_ =~ s/\s*//; 表示替换 (s/) 0 个或多个空格 (\s*) 没有任何内容 (//),有效地删除它们
  • s/\\// 并不意味着删除带有反斜杠连接器的行尾,它意味着删除字符串中的所有个反斜杠。

标签: regex perl


【解决方案1】:

s 表示“替换”。

$_ =~ s/SEARCH/REPLACE/;

所以,s/\s*//; 意味着找到每个空格并删除它们(或用空字符串替换它们)。

【讨论】:

  • 谢谢!这就解释了!
【解决方案2】:

“s”是替换函数,所以它表示“替换”/“这里匹配什么”/“这里有什么”/

这里的“/”是参数的开始和结束分隔符:s/something_to_match/replacement。 '/' 是非常常用的分隔符,但 perl 几乎允许任何未在正则表达式中使用的字符作为分隔符。

见:http://perldoc.perl.org/functions/s.html

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    相关资源
    最近更新 更多