Je commence à écrire une syntaxe de surlignage de code en JavaScript, et je veux mettre en évidence le texte entre guillemets (à la fois "s" et "s") dans une certaine couleur. ne pas être foiré par l'un d'un type de citation étant au milieu d'une paire des autres citations aussi, mais je ne sais pas vraiment par où commencer, je ne suis pas sûr de la façon dont je devrais aller trouver les citations puis trouver la fin de citation correcte.Trouver des citations de début et de fin
Répondre
à moins que vous faites cela pour le défi, jetez un oeil à Google Code Prettify.
pour votre problème, vous pouvez lire sur parsing (and lexers) at Wikipedia. Il est un sujet très vaste et vous Vous constaterez que vous rencontrerez de plus gros problèmes ems que l'analyse des chaînes.
Pour commencer, vous pouvez utiliser des expressions régulières Une expression régulière typique pour faire correspondre une chaîne est (bien qu'ils ont rarement la précision d'un véritable lexer.):
/"(?:[^"\\]+|\\.)*"/
Et puis la même chose pour '
au lieu de "
.
Sinon, pour un analyseur caractère par caractère, vous devez définir une sorte d'Etat que vous êtes dans une chaîne une fois que vous frappez "
, lorsque vous frappez "
qui n'est pas précédée d'une quantité inégale de antislashs (une quantité égale de barres obliques inverses s'échapperait l'une de l'autre), vous quittez la chaîne.
utilisation pile .. même si le prix sans équivalent trouvé pousser .. si correspondance trouvée pop
Vous pouvez trouver des citations en utilisant des expressions régulières, mais si vous écrivez un surligneur de syntaxe alors la seule façon fiable consiste à parcourir la code, caractère par caractère, et décidez quoi faire à partir de là.
E.g. d'un Regex
/("|')((?:\\\1|.)+?)\1/g
(correspond à « ce » et « ceci » et « thi \ » s ")
Je l'ai fait avec une seule expression régulière en php en utilisant en arrière des références. JS ne supporte pas et je pense que c'est ce dont vous avez besoin si vous voulez vraiment détecter les barres obliques inverses non définies
- 1. Comment trouver des lignes de début et de fin de cellules fusionnées dans Excel avec VBSCript?
- 2. Heure de début et de fin à l'aide de jquery
- 3. Obtenir les positions de début et de fin avec AntLR
- 4. Recherche de dates de début et de fin à partir des tableaux de dates (durées)
- 5. Détermination de la plage de début et de fin des octets modifiés dans un fichier
- 6. validation des dates de début et de fin avec le plugin jquery: validation
- 7. Algorithme pour trouver le temps total d'inactivité donné tableau d'heures de début/fin
- 8. Évitez d'entrer des guillemets à partir du début et de la fin d'une chaîne
- 9. Comment calculer une heure de fin en fonction de l'heure de début et de la durée?
- 10. calculer l'angle de début et de fin de la tranche de piechart
- 11. Début + Fin donné - combien de "transactions" en même temps
- 12. Calculer la date de début et de fin de la semaine précédente
- 13. Comment obtenir un enregistrement avant la date de début et de fin
- 14. Comment obtenir les dates de début et de fin du mois en cours
- 15. Correspondance d'un seul caractère entre la chaîne de début et la chaîne de fin
- 16. Delphi: Détecter le début et la fin du déplacement de la fenêtre
- 17. Configurer HTML Tidy pour ignorer les balises courtes de début et de fin PHP à l'intérieur des attributs html
- 18. jQuery sélecteur pour la correspondance au début et à la fin de l'ID?
- 19. Regex pour découper les traits d'union à partir du début et de la fin d'une chaîne
- 20. Passer des citations à nCover.console?
- 21. pas des citations dans regex
- 22. Faire des citations en CSS
- 23. meilleure façon de trouver fin de balise body en html
- 24. Calculer la date de début et la date de fin pour ce trimestre et le dernier trimestre
- 25. Que signifie "Envelopper au début lorsque la fin est atteinte"?
- 26. début de match de C# RegEx de ficelle et début de mot en même temps
- 27. citations imbriquées javascript
- 28. Virgule ColdFusion et de fin
- 29. Liste de calendriers SharePoint: Restreindre l'entrée d'un deuxième élément avec la même date de début et de fin
- 30. Quelle est la bonne façon d'obtenir la date de début et de fin d'un numéro de semaine ISO dans TSQL?
Une expression régulière comme celle-ci pourrait-elle vous aider? http://stackoverflow.com/questions/249791/regexp-for-quoted-string-with-escaping -quotes –