Je ne sais pas si cela est votre question, mais.
Les expressions régulières correspondent ou non. Et l'expression correspond à une quantité variable d'entrée. Donc, cela ne peut pas être déterminé directement.
Cependant, il est possible, si vous croyez qu'il ya une possibilité de chevauchement, d'utiliser un système de mise en mémoire tampon intelligent pour accomplir la même chose.
Il y a plusieurs façons de le faire. L'une des façons est de faire correspondre tout ce qui ne correspond pas par des assertions, jusqu'à ce que vous obteniez le début d'une correspondance (mais pas la correspondance complète que vous recherchez). Ceux-ci vous jetez simplement et effacez de votre tampon. Lorsque vous obtenez une correspondance que vous recherchez, effacez le tampon de ces données et données avant.
Exemple: /(<function.*?>)|([^<]*)/
La partie de jeter/clair de la mémoire tampon est dans le groupe 2 mémoire tampon de capture.Une autre façon est que si vous faites correspondre des chaînes de longueur finie, si vous ne trouvez rien dans le tampon, vous pouvez jeter tout en toute sécurité depuis le début du tampon jusqu'à la fin du tampon moins la longueur du chaîne finie que vous recherchez.
Exemple: Votre tampon a une taille de 64k. Vous recherchez une chaîne de longueur 10. Elle n'a pas été trouvée dans le tampon. Vous pouvez effacer (64k - 10) octets en toute sécurité, en conservant les 10 derniers octets. Puis ajouter (64k-10) octets à la fin du tampon. Bien sûr, vous avez seulement besoin d'un tampon de taille 10 octets, en supprimant/ajoutant constamment 1 caractère mais un tampon plus grand est plus efficace et vous pouvez utiliser des seuils pour recharger plus de données.
Si vous pouvez créer un tampon qui se contracte/se dilate facilement, davantage d'options de mise en mémoire tampon sont disponibles.