用逗号分隔的perl正则表达式是什么意思

时间:2013-06-28 17:54:41

标签: perl

在Perl中,以下表达式的作用是什么:

$datarow =~ s/,null/,/g;

3 个答案:

答案 0 :(得分:6)

s/pattern/replacement/是一个命令,它告诉perl将pattern的第一次出现替换为replacement

s/pattern/replacement/g导致命令替换所有出现的事件,而不仅仅是第一次出现。

您的代码所做的是找到,null的所有内容并将其替换为,(它会在每个逗号后删除null。)

答案 1 :(得分:1)

这是一个简单的替换命令:

$string =~ s/find/replace/;

在上面,变量$string正在改变。字符串find的第一个实例将替换为replace 1

在末尾添加g意味着全球,并且它会将find的所有实例替换为replace

在您的命令中,变量$datarow正在更改。 ,null的所有实例都只用逗号替换。请尝试以下脚本:

#! /usr/bin/env perl

use strict;
use warnings;
use feature qw(say);

my $datarow = "this,that,null,this,that,null,this,this,that";
$datarow =~ s/,null/,/g;
say "Datarow is equal to `$datarow'";

继续尝试这个程序。它应输出:

Datarow is equal to `this,that,,this,that,,this,this,that'

1 我在这里简化了。 find不只是一串字母和数字,而是一个regular expression。正则表达式是一个强大的概念,但大多数开发人员并不完全理解的神秘概念。但是,这里没有使用正则表达式的神奇咒语,所以这只是描述文字,null字符串。

但是,您应该花时间查看Perl中包含的Regular Expression教程。

答案 2 :(得分:0)

在Perl中,s/之后的=~表示您正在进行替换(而不是m/之后的=~,这是匹配评估),{,null 1}}是要用,替换的字符串,它位于中间/之后,而/g表示它是全局替换,否则它只会替换第一次出现...