-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構造可能很難理解。 –