2010-03-19 6 views
1

J'ai du texte avec des hyperliens HTML. Je veux supprimer les liens hypertexte, mais seulement ceux spécifiques.RegEx - Supprimer les liens hypertexte HTML basés sur le texte du lien

par exemple. Je commence par ceci:

This is text <a href="link/to/somewhere">Link to Remove</a> and more text with another link <a href="/link/to/somewhere/else">Keep this link</a> 

Je veux avoir:

This is text and more text with another link <a href="/link/to/somewhere/else">Keep this link</a> 

J'ai cette expression RegEx,

<a\s[^>]*>.*?</a> 

... mais il correspond à tous les liens.

Que dois-je ajouter à cette expression pour ne faire correspondre que les liens avec le texte de lien 'Supprimer' (par exemple) dans cette expression?

merci d'avance.

+0

$ http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/ 1732454 # 1732454 – thecoop

Répondre

1

Vous aurez probablement beaucoup de commentaires de ne pas utiliser des expressions régulières sur HTML ... mais si vous décidez d'utiliser un, essayez ceci:

<a\s[^>]*>.*?Remove.*?</a> 

C'est là « Supprimer » se situe quelque part dans le texte du lien.

+0

Merci, c'est compris. Et si je voulais faire correspondre "supprimer" avec l'insensibilité à la casse, que ferais-je envelopper? (par exemple, match sur 'Remove' ou 'remove' ou 'REMOVE' etc ...) – Rob

+2

@Rob: Assez sûr que C# a quelque chose comme 'RegexOptions.IgnoreCase' que vous pouvez passer en tant que param. – mpen

0
$str=~/(.*)<a.*<\/a>([a-z ]+ <a.*<\/a>)/; 
print "$1$2"; 
0

(. *?) < a. * [Rr] emove. * a> (*.)

reconstruire avec: 1 $ 2

Questions connexes