Normalement le . ne correspond pas à la nouvelle ligne sauf si je spécifie le moteur pour le faire avec l'indicateur (? S). J'ai essayé sur mon rédacteur en chef regexp de (UltraEdit v14.10) moteur regexp en utilisant le mode regexp de style Perl:Expression régulière à l'aide du mode Dot-Matches-All
(?s).*i
Le texte de recherche contient plusieurs lignes et chaque ligne contient beaucoup de caractères 'i'.
Je pense que le moyen regexp ci-dessus: la recherche autant de caractères (. Parce que le '? s la correspond maintenant à quoi que ce soit, y compris saut de ligne) possible (à cause de l'avidité pour *) jusqu'à atteindre le caractère' je'.
Cela devrait signifier "du premier caractère au dernier 'dans la phrase dernière" (la gourmandise devrait atteindre la dernière phrase, non?). Mais avec le test d'UltraEdit, il s'avère que "du premier caractère au dernier" i "dans la première phrase qui contient un i". Ce résultat est-il correct? Ai-je fait une mauvaise interprétation de mon expression reg?
par exemple. étant donné ce texte
aaa
bbb
aiaiaiaiaa
bbbicicid
il est
aaa
bbb
aiaiaiai
assorti. Mais je pense:
aaa
bbb
aiaiaiaiaa
bbbicici
Je ne connais pas le bug de lookbehind que vous avez mentionné. Mais pourrait-il être que la recherche avide dans l'ensemble du fichier d'entrée est trop lent qu'ils ont décidé de changer le comportement de cette façon? Rappelez-vous, UltraEdit permet d'éditer le fichier d'entrée de MB en taille. – JavaMan
EditPadPro gère les fichiers de taille GB et ne possède pas ces restrictions regex. Si je construis une regex gourmande, je m'attends à ce qu'elle fonctionne correctement. Si cela signifie manquer de mémoire, alors c'est mon problème ou le système d'exploitation, mais l'éditeur ne devrait pas me deviner. –