2013-03-12 7 views
-1

Je cherche à utiliser regex pour faire correspondre une chaîne qui a plusieurs occurrences du même texte. Ainsi, par exemple, dans cet exemple:Chaîne de correspondance Regex avec les caractères répétitifs

Certains texte ici 357313 texte Plus va ici 654321

Certains texte ici 123456 texte Plus va ici 123456

Certains texte ici 123456 texte Plus va ici 654321

Je voudrais qu'il corresponde à la deuxième option et non aux première et troisième options. Je suis assez nouveau à regex, mais j'ai passé des heures à chercher en ligne pour essayer de trouver une solution à ce problème. Les chaînes ne sont pas connues afin de les utiliser dans la recherche, j'ai besoin d'utiliser regex pour savoir si elles correspondent ou non.

Toute aide ou assistance serait appréciée!

Merci!

+0

Que diriez-vous * \ 1 – user1937198

+1

Pouvez-vous expliquer pourquoi les première et troisième lignes devraient ne pas être apparié? Les deux ont un texte répété: "le texte va ici". –

+0

Bon point, le texte se répète dans ces zones mais la seule chose qui sépare les chaînes dont j'ai besoin est que les chaînes numérotées correspondent. –

Répondre

0

Je crois que vous voulez quelque chose comme ceci, où il suppose que vous voulez une ou plusieurs correspondances de certains textes suivis de votre chaîne unique.

/^(.+123456){1,}$/

Je viens de réaliser que vous serez peut-être en fait à la recherche pour trouver des chaînes qui contiennent la même séquence de caractères plus d'une fois. Cela ne me semble pas vraiment un problème pour regex. Bien qu'il soit possible pour les utilisateurs de regex plus avancés, je dirais que ce n'est pas une bonne idée d'écrire une regex aussi compliquée. Je vous renvoie à http://en.wikipedia.org/wiki/Longest_common_substring_problem qui peut avoir des informations qui s'appliqueraient ici.

+0

Merci pour l'entrée. Je ne sais pas quel est le motif de recherche, je sais juste que les champs que je veux sont ceux avec les chaînes correspondantes. Je crois que vous avez raison et que ce n'est pas quelque chose que regex peut gérer. –

1

cela correspond à une ligne comme

[certains caractères] [quelques chiffres] [quelques chracters] [les mêmes chiffres que précédemment] [certains caractères]

/.+(\d+).+$1.+/

est que ce que vous êtes à la recherche de?

modifier: (. *).

/[^\d]+(\d+)[^\d]+$1[^\d]+/

pour faire shure les [certains caractères] sont pas chiffres

+0

Oui, c'est exactement ce que je cherchais! A dû utiliser \ 1 pour rappeler le modèle plus tard dans la recherche, mais il semble trouver les entrées correctes. Merci de votre aide! –

+0

s'il vous plaît marquer cette question en réponse (avec la coche) –

Questions connexes