2010-03-02 10 views
0

Je dois rechercher le texte dans un document HTML pour les reg-exes (courriels, numéros de téléphone, etc.) et les mots. Les correspondances doivent être mises en évidence et être ancrées de manière à ce qu'un lien puisse être généré pour accéder à l'emplacement des correspondances. Donc, non seulement il faut trouver des correspondances en utilisant des motifs dans le besoin de faire un remplacement ajouter le code html approprié. Je suis actuellement en train d'utiliser jquery mais je ne suis pas très content de la rapidité. Dans un fichier de 1,5 Mo, il faut environ 5 secondes pour correspondre à 2 regexes et cela augmente quand j'ajoute plus de critères de recherche.Méthode rapide pour trouver des correspondances regex dans un document volumineux en utilisant javascript?

Est-ce que quelqu'un sait d'une méthode rapide pour trouver des correspondances regex dans un grand document en utilisant javascript?

Répondre

1

Vous dites que vous «utilisez jQuery» mais vous ne dites pas comment. Avez-vous essayé un plugin "highlight" (ou, comme il semble que vous auriez besoin, une dérivation d'un)? J'ai utilisé celui-ci: http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html et ça ne me semble pas lent. Encore une fois, vous devrez travailler dessus pour y ajouter le balisage dont vous avez besoin, mais cela devrait être assez clair - ce n'est pas très important.

Il semble que ce que vous voulez faire pour la performance est de prendre vos expressions régulières et les combiner dans ce qui équivaut à une «grammaire symbolique». En d'autres termes, vous ne voulez pas partir de rien à la recherche de chaque regex individuellement dans tout le document. Au lieu de cela, vous voudrez procéder avec une regex qui correspond à chaque cible possible (une à la fois bien sûr), et chaque fois qu'il en trouve un, vous le remplacez par ce qui est approprié. De cette façon, vous pouvez faire un seul passage sur le document, peu importe sa taille et le nombre de motifs que vous recherchez.

éditer Le plugin de Mr. Burkard ne vous permet pas de rechercher avec des regex; il utilise "indexOf" en interne. Hmm.

Questions connexes