一个字符串我是新来的这两个Perl和REG-EX的,而且我想删除一个文本文件中字符串的第一个单词(或第一字线),以及其后的任何空白。的Perl - 删除第一个词与正则表达式
例如,如果我的字符串为'one two abd123words'
,我想删除'one '
。
我尝试的代码是:$line =~/(\S)$/i
;
但这只给了我硬道理。
如果它有什么不同,我试图删除的单词是一个输入,并存储为$ arg。
一个字符串我是新来的这两个Perl和REG-EX的,而且我想删除一个文本文件中字符串的第一个单词(或第一字线),以及其后的任何空白。的Perl - 删除第一个词与正则表达式
例如,如果我的字符串为'one two abd123words'
,我想删除'one '
。
我尝试的代码是:$line =~/(\S)$/i
;
但这只给了我硬道理。
如果它有什么不同,我试图删除的单词是一个输入,并存储为$ arg。
要删除的每一行使用的第一个字:
$line =~ s/^\S+\s*//;
编辑了解释:
s/.../.../ # Substitute command.
^ # (Zero-width) Begin of line.
\S+ # Non-space characters.
\s* # Blank-space characters.
// # Substitute with nothing, so remove them.
你的意思是,这样的吗? :
my $line = 'one two abd123words';
$line =~ s/^\s*\S+\s*//;
# now $line is 'two abd123words'
(即除去任何初始的空白,接着是一个或多个非空白字符,然后通过任何新的初始空格。)
在单行形式:
$ perl -pi.bak -e 's{^\s*\S+\s*}//' file.txt
奇妙的是,感谢您的解释,我发现了大量的网站,详细说明各个正则表达式命令如何工作,但很少解释如何实际组合部分。 – ImprovedSilence 2012-01-07 21:06:17
为什么当我试图打印这个时,我只是得到一个'1'(布尔?),而不是字符串?我只是用'print $ line =〜s/^ \ S + \ s * //;'? – ImprovedSilence 2012-01-07 22:39:28
@ImprovedSilence:在其他指令中打印:'$ line =〜s/^ \ S + \ s * //;打印$线;'或'使用开关r',如:'打印$线=〜S/^ \ S + \ S * // R等' – Birei 2012-01-07 22:47:38