/ / Jak dopasować coś takiego za pomocą wyrażenia regularnego Perl? - regex, perl

Jak dopasować coś takiego za pomocą wyrażeń regularnych Perla? - regex, perl

Plik wygląda

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

Potrzebuję tylko słów w nawiasie, które zaczynają się od [N więc tutaj chcę, aby koniec komputera wyglądał, dlaczego nie mogą, ale nie muszą, znajdować się w tej samej linii

Próbowałem coś takiego:

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

ale pasuje tylko do pierwszego z każdej linii.

Odpowiedzi:

4 dla odpowiedzi № 1

Użyj g modyfikator wyrażenia regularnego, aby wyszukać dopasowania lobalne „g”. Albo tak:

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

Albo tak:

my @matches = $line =~ /[N(.+?)]/g;
# @matches contains all of the matching items of text

0 dla odpowiedzi nr 2

Będziesz musiał zmienić go na pętlę while, aby iterować po każdym dopasowaniu grupowym Dokumentacja Perla ilustruje to.