Как мне сопоставить что-то подобное с помощью Perl Regex? - PullRequest
1 голос
/ 18 февраля 2011

Файл выглядит как

[N the computer end] [M whatever] [N you look] [N why not]

Мне нужны только слова в скобках, которые начинаются с [N, поэтому здесь я хочу, чтобы компьютер заканчивался, вы смотрите, почему они не могут или не могут вта же строка

Я пробовал что-то вроде этого:

if($line =~/\[N(.+?)\]/)

, но оно совпадает только с первой строкой в ​​каждой строке.

Ответы [ 2 ]

4 голосов
/ 18 февраля 2011

Используйте модификатор g в регулярном выражении, чтобы найти "g" lobal совпадения. Либо так:

while ($line =~ /\[N(.+?)\]/g) {
    # $1 contains the text between "[N" and "]"
}

Или вот так:

my @matches = $line =~ /\[N(.+?)\]/g;
# @matches contains all of the matching items of text
0 голосов
/ 18 февраля 2011

Вам нужно будет изменить его на цикл while, чтобы выполнять итерацию по каждому совпадению группы. Документация Perl иллюстрирует это.

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