2009-09-24 5 views
1

Je n'arrive pas à comprendre comment faire correspondre les commentaires, mais pas HTML hex dans regex. Par exemple, je veux que le script correspondComment faire correspondre les commentaires commençant par #, mais pas les couleurs hexadécimales

#I'm a comment, yes I am 

mais pas

#FF33AF 
+1

Qu'essayez-vous de faire? Ecrire une sorte d'analyseur? – Gumbo

+1

Normalement, le modèle: #comment affichera simplement "#comment" dans le navigateur. Un commentaire HTML ressemble à: RMorrisey

+0

Quel type de document contient des commentaires * de type script * et des codes de couleur * CSS-like *? Bien sûr, vous pouvez * en créer * un, mais cela doit être un événement inhabituel? – pavium

Répondre

2

Vous pouvez utiliser préanalyse négative. De la documentation python:

(?! ...)

Matches si ... ne correspond pas à côté. C'est une assertion de lookahead négative. Par exemple, Isaac (?! Asimov) ne correspondra à 'Isaac' que s'il n'est pas suivi par 'Asimov'.

+0

Parfait! J'ai trouvé ce morceau de code avant, mais toute la documentation que j'ai trouvée était horrible. Merci! – RyanScottLewis

1

Eh bien, l'expression régulière évidente va être quelque chose comme:

(?m-:^\s*#(?![0-9A-Fa-f]{6}).*$)

Cela vous donne toutes les lignes qui commencent par un « # ». De votre message, vous n'êtes pas très précis, mais je pense que c'est ce que vous cherchez.

Mise à jour:

Rectifié seulement permettent les six:

(?m-:^\s*#(?![0-9A-Za-z]{6}\s*$).*$)
2

Pour faire le travail dont vous avez besoin d'un analyseur pas matcher d'expression régulière. Par exemple, "#decade" est-il un commentaire ou un nom de couleur? Vous ne pouvez pas savoir sans un petit contexte.

Questions connexes