2011-02-18 3 views
1

Le fichier ressembleComment faire correspondre quelque chose comme ça en utilisant perl regex?

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

Je ne ai besoin les mots du support qui commencent par [N donc ici, je veux la fin de l'ordinateur vous regardez pourquoi ne pas ils peuvent ou non dans la même ligne

J'ai essayé quelque chose comme ceci:

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

mais correspondent seulement le premier de chaque ligne.

Répondre

4

Utilisez le modificateur g dans l'expression régulière pour rechercher des correspondances lobales "g". Soit comme ceci:

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

Ou comme ceci:

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

Vous aurez besoin de changer pour une boucle while itérer sur chaque match de groupe. Le Perl documentation illustre cela.

Questions connexes