Correspondance multiligne chaîne dans le fichier à l'aide de regex perl

Je lis dans un autre dossier de perl et essayer de trouver toutes les chaînes de caractères entourée par des citations à l'intérieur du fichier, simple ou multi-lignes. J'ai appariés toutes les lignes simples très bien mais je ne peut pas correspondre à la mulitlines sans impression de la totalité de la ligne, quand je veux juste que la chaîne elle-même. Pour exemple, voici un extrait de ce que je suis en train de lire dans:

#!/usr/bin/env perl
use warnings;
use strict;

# assign variable

my $string = 'Hello World!';
my $string4 = "chmod";
my $string3 = "This is a fun 
    multiple line string, please match";

la sortie que j'aimerais c'est

'Hello World!';
"chmod";
"This is a fun multiple line string, please match";

mais je suis arriver:

'Hello World!';
my $string4 = "chmod";
my $string3 = "This is a fun 
    multiple line string, please match";

C'est le code, je suis aide à trouver les cordes, tout le contenu du fichier sera stocké dans @contenu:

my @strings_found = ();
my $line; 
for(@contents) {
    $line .= $_;
}

if($line =~ /(['"](.?)*["'])/s) {
    push @strings_found,$1;
}

print @strings_found;

Je devine que je suis seulement un 'Hello World!'; correctement parce que je suis en utilisant le $1, mais je ne suis pas sûr de savoir comment trouver les autres sans boucle, ligne par ligne, ce qui est je pense, il serait difficile de trouver le multi-ligne de chaîne car il ne sait pas ce que la prochaine ligne est.

Je sais que ma regex est raisonnable de base et ne tient pas compte de certaines mises en garde, mais je voulais juste avoir la base de la plupart des captures regex de travail avant de passer à des situations plus complexes.

Pointeur à l'endroit où je vais mal?

  • J'ai aussi essayé de remplacer le '\n' par des espaces, mais cela n'a pas fonctionné.
InformationsquelleAutor Lukaaaaaaaay | 2014-03-19