J'aimerais pouvoir rechercher différents mots dans une chaîne de caractères. Lorsque j'en trouve un, je veux diviser la chaîne de caractères à ce moment-là en 3 parties (gauche, correspondance, droite), le texte correspondant serait exclu, et le processus continuerait avec la nouvelle chaîne de caractères gauche+droite.
Maintenant, une fois que j'ai fait toutes mes correspondances, je dois inverser le processus en réinsérant les mots correspondants (ou un remplacement pour eux) à l'endroit où ils ont été retirés. Je n'ai jamais vraiment trouvé ce que je voulais dans aucune de mes recherches, alors j'ai pensé que je demanderais une contribution ici sur SO.
Veuillez me faire savoir si cette question nécessite une description plus approfondie.
BTW - pour le moment, j'ai un algorithme très pauvre qui remplace le texte correspondant par une chaîne de caractères unique, puis remplace les chaînes de caractères par le texte de remplacement pour la correspondance appropriée après que toutes les correspondances ont été faites.
C'est l'objectif :
one two three four five six
match "three" replace with foo (rappelez-vous que nous avons trouvé trois, et où nous l'avons trouvé)
one two four five six
|
three
correspond à "deux quatre" et l'empêche d'être égalé par quoi que ce soit (édité pour plus de clarté)
one five six
|
two four
|
three
à ce stade, vous ne pouvez pas correspondre par exemple à "un deux".
toutes les correspondances ont été trouvées, remettez maintenant leurs remplaçants (dans l'ordre inverse)
one two four five six
|
three
one two foo four five six
Quel est l'intérêt ? Empêcher le texte de remplacement d'une correspondance d'être apparié par un autre motif. (tous les motifs sont exécutés en même temps et dans le même ordre pour chaque chaîne traitée).
Je ne suis pas sûr que le langage importe, mais j'utilise Lua dans ce cas.
Je vais essayer de reformuler : j'ai une liste de motifs que je veux trouver dans une chaîne de caractères donnée, si j'en trouve un, je veux supprimer cette partie de la chaîne de caractères pour qu'elle ne corresponde à rien d'autre, mais je veux garder la trace de l'endroit où je l'ai trouvé pour pouvoir y insérer le texte de remplacement une fois que j'ai fini d'essayer de faire correspondre ma liste de motifs.
Voici une question connexe :