0
votes

Chercher de l'aide d'écrire une regex à Java

J'ai besoin d'écrire une regex qui vérifie que dans la chaîne il y a 12 | (Tuyaux) et 13 autres mots tous les caractères sans | tuyau (lettres de numéro et caractères spéciaux). L'entrée pour la regex est la suivante:

00000003 | 1 | 1 | 0 | Nom du test | primaire@email.com | Rue | Ville | État | Code postal | GBR | Description | 30

J'ai essayé de le construire comme ceci: xxx

mais la regex ne vérifie pas 12 tuyaux. De plus, j'ai essayé de construire cette regex xxx

Aucun d'entre eux n'a pas fonctionné pour moi. tout conseil?


3 commentaires

Veuillez lire "Comment créer un exemple de reproductible minimal ". Ensuite, utilisez le Modifier le lien pour améliorer votre question (ne pas ajouter plus d'informations via des commentaires). Sinon, nous ne sommes pas en mesure de répondre à votre question et de vous aider. "Distnt Travailler" n'est pas une bonne description du problème et oui, lorsque vous avez un modèle répété, utilisez {compte}!


Toute chance avec mon Répondre ?


Re, "tout conseil?" (1) Construisez votre regex dans un testeur de regex basé sur le navigateur. (Google pour "testeur de regex".) Il vous aidera à visualiser quelles parties de votre regex font ou ne correspondent pas quelles parties de votre texte donné. (2) Pour une contribuable, cela aide souvent à l'analyser par étapes ou à adopter une approche hybride. Par exemple: utilisez une simple regex pour trouver des choses séparées par des caractères de tuyaux. Ensuite, utilisez une ou plusieurs autres regex simples pour analyser chaque chose.


4 Réponses :


0
votes

quelque chose comme ça? XXX

En Anglais:

Trouvez 12 instances de tout ce qui n'est pas un tuyau suivi d'un tuyau. Puis assurez-vous que cela se termine dans quelque chose qui n'est pas un tuyau

https://regex101.com/r/r8tqal/1


0 commentaires

1
votes

Vous devez utiliser ceci: ^ (?: [^ \ |] + \ | |) {12} [^ \ |] + $

si correctement échappé comme une chaîne Java: modèle de chaîne = "^ (?: [^ \\ |] + \\ |) {12} [^ \\ |] + $";

Ceci lit comme ceci:

^ : depuis le début de l'expression

(?: [^ \ |] + \ |) : cherche un tas de non-| suivi d'un | . Le (?: Chose est pour les groupes non capturants. Il indique au moteur de regex que vous ne vous souciez pas de la valeur de champ, c'est-à-dire que c'est là. C'est une optimisation.

{12} : exactement 12 fois

[^ \ |] + : alors un dernier 13ème champ de non-|

$ : et à ce stade, vous devez atteindre la fin de l'expression

Exemple réel à: https://www.regexplanet.com/share /index.html?hare=yyyyDFv274d

Je suis sûr que vous savez déjà, mais pour des raisons de complétude, voici toutes les jetons de regex en Java et leurs significations: https://docs.oracle.com/ Javase / 7 / Docs / API / Java / Util / Regex / Pattern.html


1 commentaires

Désolé, je n'ai pas inclus une chaîne Java correctement échappée pour vous le montrer. Je pensais que tu l'obtiens à partir de l'exemple de lien que je t'ai envoyé. J'ai édité la réponse pour l'inclure.



1
votes

Cela semble convenir à

"^ (?: [^ |] * \\ w [^ |] * \\ |) {12} [^ |] * \\ w [^ |] * $ "

https://regex101.com/r/ Twyddv / 1

expliqué xxx


0 commentaires

0
votes

J'ai vérifié celui-ci: xxx

a expliqué < / a>


0 commentaires