2010-02-09 8 views
1

J'ai besoin d'une expression régulière en javascript qui fait ce qui suit.Expression régulière qui ignore les entités HTML

Ces instances de une qui ne sont pas la partie d'une entité HTML, devrait être remplacé par w.

Ex:

abc should change to wbc 

aabacaa should change to wwbwcww 

&abcaa& should change to &wbcww& 

et ainsi de suite.

J'utilise JavaScript.

Toute aide est appréciée.

+0

Avez-vous besoin de tenir compte de toutes les entités HTML (comme '¶')? Ou juste le '&'. Si vous avez besoin de rendre compte de tout, ma réponse n'est pas la bonne (et je vais l'enlever). –

+0

quel est l'outil que vous vouliez utiliser? – Vijay

Répondre

6

Essayez ceci:

"&abcaa&".replace(/&[^;]+;|a/g, function($0) { 
    return $0 === "a" ? "w" : $0; 
}) 
+0

Neat! Je devrais vraiment apprendre JavaScript. –

+0

cela ne va pas convertir un & b en w & b – Varun

+0

@Varun: Oui, il le fera. –

0

un dans votre langage de programmation favori manière, non regex, diviser votre chaîne sur « & un » (ou &), remplacer les éléments dédoublées, puis rejoindre en arrière, par exemple en Python

>>> s="&abcaa&" 
>>> '&a'.join([ i.replace("a","w") for i in s.split("&a") ]) 
'&wbcww&' 
-1

Comme une réponse plus générale, lors de l'écriture des expressions régulières, la première chose que je fais est d'aller à http://rubular.com et exposer quelques chaînes de test. Ensuite, j'écris et retravaille l'expression régulière jusqu'à ce qu'elle fasse ce dont j'ai besoin.

Oui, je sais que Rubular est un site Ruby regex, mais la syntaxe RegExp est très similaire, sinon identique pour la plupart des langages (je pense que Perl utilise une syntaxe étendue). J'ai utilisé avec succès Rubular pour tester Java RegExps.

Questions connexes