0
votes

Perl Split and Regex Query

J'ai une ligne de texte tel que

Ceci "est" un test "de" problèmes "très intéressants" qui peuvent être résolus

et j'essaie de la diviser pour que mon Array @goodtext contiendrait cependant de nombreuses chaînes de sections citées. Donc, mon tableau contiendrait ce qui suit: xxx

Le nombre de sections citées dans chaque ligne varie, malheureusement ...


1 commentaires

3 Réponses :


3
votes

Exemple d'utilisation Texte :: équilibré pour extraire les sous-chaînes citées:

"is"
"of very interesting"
"that can"


0 commentaires

5
votes

supposant qu'il ne peut y avoir de nidification sensible xxx pré>

ou, si vous devez pouvoir faire du traitement tout en les collectant p> xxx pré> Notez que nous avons besoin de la fermeture " code>, même si [^"] + code> correspondra-t-il de toute façon. C'est ainsi que le moteur le consomme et le dépasse, de sorte que la prochaine correspondance de " code> est en effet la prochaine ouverture suivante. P>

si les citations" peuvent être " niché "aussi bien em>" alors que vous voudriez text-texte :: équilibré code> p>

comme un de côté, notez la différence de comportement du / g code> modificateur dans la liste et scalaire contextes . p>

  • Dans le contexte de la liste, imposé par le Affectation de liste @ asduit code > Dans le premier exemple), avec le modificateur / g code> L'opérateur de correspondance renvoie une liste de tous les captures ou de tous les matchs s'il n'y a pas de capture dans le motif (pas de parens) p>

  • dans le contexte scalaire, lorsqu'il est évalué comme le pendant code> condition (par exemple), son comportement avec / g code> est plus complexe. Après une correspondance, la prochaine fois que la Regex l'exécute continue de rechercher la chaîne de la position de (un après) le match précédent, itérant ainsi à travers des correspondances. P>

    Notez que nous n'avons pas besoin d'une boucle pour cela (quelle est une cause subtile pour les bogues subtils) p>

    my $string = q(one simple string);
    
    $string =~ /(\w+)/g; 
    say $1;               #--> one
    
    $string =~ /(\w+)g;
    say $1;               #--> simple
    


0 commentaires

1
votes

Essayez ceci. XXX


0 commentaires