Perl - удалить первое слово в строке с помощью регулярных выражений - PullRequest
2 голосов
/ 08 января 2012

Я новичок как в Perl, так и в reg-ex, и я пытаюсь удалить первое слово в строке (или первое слово в строке в текстовом файле) вместе с любым пробелом, который следует за ним.

Например, если моя строка 'one two abd123words', я хочу удалить 'one '.

Код, который я пробовал: $line =~/(\S)$/i;
но это только дает мне последнее слово.
Если это имеет какое-либо значение, слово, которое я пытаюсь удалить, является вводом и хранится как $ arg.

Ответы [ 3 ]

10 голосов
/ 08 января 2012

Для удаления первого слова каждой строки используйте:

$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.
2 голосов
/ 08 января 2012

В однострочном виде:

$ perl -pi.bak -e 's{^\s*\S+\s*}//' file.txt
2 голосов
/ 08 января 2012

Ты имеешь в виду, как это?:

my $line = 'one two abd123words';
$line =~ s/^\s*\S+\s*//;
# now $line is 'two abd123words'

(При этом удаляются все начальные пробельные символы, за которыми следует один или несколько непробельных символов, а затем все новые начальные пробелы.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...