我是Perl和reg-ex的新手,我正在尝试删除字符串中的第一个单词(或文本文件中一行中的第一个单词),以及随后的任何空格。
例如,如果我的字符串为'one two abd123words'
,我想删除'one '
。
我尝试的代码是:$line =~/(\S)$/i
;
但这只能给我最后一句话
如果它有任何区别,我试图删除的单词是一个输入,并存储为$ arg。
答案 0 :(得分:10)
要删除每行的第一个单词,请使用:
$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.
答案 1 :(得分:2)
你的意思是,像这样? :
my $line = 'one two abd123words';
$line =~ s/^\s*\S+\s*//;
# now $line is 'two abd123words'
(删除任何初始空格,后跟一个或多个非空白字符,后跟任何新的初始空格。)
答案 2 :(得分:2)
以单行形式:
$ perl -pi.bak -e 's{^\s*\S+\s*}//' file.txt