2013-09-05 5 views
-1

J'ai besoin de l'expression rationnelle pour enlever l'easycode du code de Perl.Besoin regex pour enlever l'easycode de la chaîne

J'utilise cette expression régulière, mais ce n'est pas correct

$message =~ s/<.+?>|&[a-z]+;|\[.+?\]/ /g; 

Ce regex supprime tout le code entre [.+?\].

S'il vous plaît laissez-moi savoir si quelqu'un peut aider

Répondre

0

Eh bien, oui, c'est ce que la partie \[.+?\] est correspondant. Il suffit de retirer cette partie (et l'opérateur alternance précédente):

$message =~ s/<.+?>|&[a-z]+;/ /gi; 

(Je pense aussi que votre regex doit être insensible à la casse)

+0

dans ce cas, il permettra à tout le texte entre [] mais je veux vérifier qu'il commence par le texte de l'étiquette ou avec un jeu, puis le texte de la balise et permettre toute autre chose après cela. –

+0

@ABHISHEKGOYAL: Désolé, je ne comprends pas ce que ça veut dire. Pourriez-vous fournir des exemples avant/après (éditez votre question pour montrer à quoi le texte devrait ressembler avant et après le remplacement)? –

+0

Actuellement, si je donne ce message ci-dessous cette regex supprime toutes les données entre [] Le signe dollar ($) est utilisé pour indiquer les prix. [nikon 400] et [nikon $ 400] donneront des résultats différents. relie deux mots, par ex. [ tri rapide ]. ici, après avoir utilisé cette regex, il supprime tout le code [nikon 400]. mais je dois contourner seulement les charaters easycode comme [CODE] | [QUOTE] .. –

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

my @test = ("[ nikon 400]", "[ nikon \$400 ]", "[quick_sort]", "[CODE]", "[QUOTE]", "[OTHER STUFF]", "[ test123!%&/(){} ]"); 

foreach my $line (@test){ 
    $line =~ s/<.+?>|&[a-z]+;|\[[A-Z]+\]/ /g; 
    print "$line\n" 
}; 

sortie:

[ nikon 400] 
[ nikon $400 ] 
[quick_sort] 


[OTHER STUFF] 
[ test123!%&/(){} ] 

Je peux juste Supposons que c'est vraiment ce que vous cherchez. Voulez-vous combiner plusieurs entrées entre [] comme [quick sort] sera changé en [quick_sort]? Ce ne serait pas un gros problème. Mais vous devez nous donner des informations supplémentaires sur le texte (entre les parenthèses) afin que nous puissions construire une regex bien ajustée et pas seulement une bête avide.

Questions connexes