-2
A
回答
6
s/pattern/replacement/
是告诉Perl与replacement
取代的pattern
第一次出现的命令。
s/pattern/replacement/g
导致该命令替换所有的事件,而不仅仅是第一个。
您的代码所做的是找到所有出现的,null
,并用,
(它在每个逗号后删除null
)替换它们。
0
在Perl中s/
后=~
意味着你正在做一个替代(如=~
这是一个匹配评估后,相对于m/
),该,null
是来自中间/
后你想与,
替换字符串,和/g
意味着它是一个全球性的更换,否则它会只需更换第一ocurrence ...
1
这是一个简单的替换命令:
$string =~ s/find/replace/;
在上面,TH e变量$string
正在改变。字符串find
的第一个实例将替换为replace
。
添加在年底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'
我在这里简单。 find
不只是一串字母和数字,而是一个regular expression。正则表达式是一个强大的概念,但大多数开发人员并不完全理解的神秘概念。然而,这里没有使用正则表达式的魔术咒语,所以这只是描述了文字,null
字符串。
不过,您应该花些时间看一下Perl中包含的Regular Expression教程。
相关问题
- 1. 正则表达式逗号分隔号
- 2. 正则表达式 - 用逗号分隔
- 3. 正则表达式从逗号分隔号分隔的列表
- 4. 正则表达式(perl)中的[\ 0-9]是什么意思?
- 5. 正则表达式这是什么正规表达式S#的意思^ */##小号
- 6. 的Perl /正则表达式 - 逗号
- 7. 是什么正则表达式的意思是,为什么
- 8. 这些Perl正则表达式是什么意思?
- 9. Java正则表达式用逗号分隔,但忽略逗号内的逗号
- 10. Perl正则表达式 - 为什么正则表达式/[0-9\.]+(\,,)/匹配逗号
- 11. 用逗号分隔的名字搜索的正则表达式
- 12. 用逗号分隔的换行符的正则表达式
- 13. 用逗号分隔的字符串的正则表达式
- 14. 用逗号分隔的文本的正则表达式
- 15. 什么是冒号分隔值的正则表达式?
- 16. 正则表达式逗号或逗号分隔或空间
- 17. 正则表达式的帮助:逗号分隔的列表
- 18. 逗号在我的正则表达式中意味着什么
- 19. 正则表达式中的正斜杠是什么意思
- 20. JavaScript正则表达式中的正斜杠是什么意思?
- 21. 使用正则表达式来分析逗号分隔列表
- 22. 正则表达式用逗号分隔的十进制数
- 23. C#正则表达式,被甩,并用逗号分隔的话
- 24. 正则表达式用逗号分隔的整数
- 25. Java正则表达式用逗号分隔的数字
- 26. 是什么正则表达式的意思是: '/ &\w; /'
- 27. 这是什么正则表达式的意思是“[^>] *
- 28. Perl的 - 正则表达式只提取逗号分隔的字符串
- 29. 正则表达式的帮助 - 逗号分隔的字符串
- 30. JavaScript的正则表达式逗号分隔的大量重复
['perldoc perlre'](http://perldoc.perl.org/perlre.html)和['perldoc perlop'](http://perldoc.perl.org/perlop.html) – pilcrow
逗号为不重要;它只是一个逗号字符。 –
不要太难在OP。这不是一个函数通常编写的标准方式,当你不习惯时,它会令人困惑。在PHP中,它就像'$ datarow = ereg_replace(“,null”,“,”,$ datarow);'''''''''''也就是说,有一个明确的函数('ereg_replace'),一组清晰的参数,null,'','',''和'$ datarow),以及获取值的变量(同样是'$ datarow')。如果你不是Unix的人,Perl的sed/awk构造可能很难理解。 –