Le problème c'est que ton premier groupe de capture est ancré au début de la chaîne ^(.*) donc tu ne peux pas espérer qu'il capture quoi que ce soit qui ne commence pas au début de la chaîne. D'autre part, le quantificateur * l'autorise à être vide, ce qui peut aussi être un problème suivant ce que tu souhaites faire.
Pour ton exemple de chaîne tu peux déjà changer ta pattern comme ceci:
/^.*?\b(\w.*)(\b.*)\n\1(.*)/
ou en supprimant carrément l'ancrage:Aprés, pour allez plus avant, il faudrait que tu détailles mieux:- Les mots peuvent-ils être coupés par les groupes de capture et la référence au groupe 1?
- si les deux lignes ont plusieurs parties en commun lesquelles choisir et selon quel critère? La plus à gauche, la plus longue, autre et sur quelle ligne ?
- La partie commune peut-elle être vide?
- La partie commune doit-elle forcément débuter au début de la deuxième ligne?
NB: Je n'ai pas voulu compliquer la pattern outre mesure pour améliorer sa performance, mais dans son état actuel, ce n'est pas le genre de pattern à appliquer sur une longue chaîne.
Partager