Perl - 使用regexp删除字符串中的第一个单词

时间:2012-01-07 20:52:28

标签: regex string perl

我是Perl和reg-ex的新手,我正在尝试删除字符串中的第一个单词(或文本文件中一行中的第一个单词),以及随后的任何空格。

例如,如果我的字符串为'one two abd123words',我想删除'one '

我尝试的代码是:$line =~/(\S)$/i;
但这只能给我最后一句话 如果它有任何区别,我试图删除的单词是一个输入,并存储为$ arg。

3 个答案:

答案 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