0
votes

regex multiline avec une longueur différente

J'ai un texte multi-lignes.

1,00 kg  159,62 159,62


0 commentaires

3 Réponses :


0
votes

J'ai pu y parvenir avec cette simple regex: xxx

explication: Recherchez une ligne qui a «kg» dedans et prenez un numéro à la fin de la ligne dans un groupe de capture. Assurez-vous d'avoir multiline drapeau sur.

une démo sur regex101.com: https://regex101.com/r/u9pq8i/1/


6 commentaires

C'est une regex extramly perdue. correspondra à n'importe quel personnage afin que vous associiez la chaîne "foobar-kg !!!!!!" 12121212121212121212 "Probablement pas ce que vous voulez! Voir REGEX101.com/R/U9PQ8I/2


Eh bien, je suppose que le démarreur du sujet peut décider si c'est ce qu'il veut ou non. Compte tenu de sa structure de données, cela fonctionne simplement et est simple à lire. Bien sûr, si la structure de données change beaucoup, il a besoin d'une solution plus compliquée.


Salut Pavel, celui-ci m'a donné le nombre entier, atteindre la virgule, ce que je veux, c'est de l'exclure de la deuxième décimale, comme de: 1,00 kg 159,62 159 62050223 Je veux 050223 et: 1,00 kg 461,90 461,90710201449 Je veux 710201449 La structure est plus compliquée, mais nous pouvons laisser toute la donnée Structure pour le moment parce que les premières choses d'abord :)


Hey @friend, vous avez donc besoin d'un numéro de deux chiffres après un coma comme 1 234567 se transforme en 4567? Est-ce exact?


Correct, la regex semblait un peu complexe pour mes connaissances.


Je vois qu'il y a déjà une réponse correcte, mais juste pour la consistance, voici ma version qui fonctionne également et est un peu plus simple :. * kg. * \ B. *, \ D + $) ( Regex101.com/r/U9PQ8I/3 )



0
votes

Votre regex est très lâche Voir cet exemple https://regex101.com/r/7qvm6w/1 Vous devez examiner les exigences réelles de la ligne 3, sera-t-elle toujours au format que vous suggérez? Si oui, essayez peut-être la regex suivante avec un groupe de capture pour saisir les caractères finaux.

questions à poser

  1. est la valeur toujours de la même forme?
  2. est-ce toujours kg
  3. est la valeur à la fin toujours un nombre?

    https://regex101.com/r/7qvm6w/2 xxx

    La valeur que vous avez après sera dans le groupe de capture final


3 commentaires

La référence de valeur m'a donné la valeur correcte! Merci! Non seulement avez-vous résolu le problème que vous me donnez réellement bonne idée!


Est-il possible d'utiliser regex dans l'automatisation, de nettoyer les PDF, je suis un peu nouveau dans Regex, disons que nous avons eu des fournisseurs différents et qu'ils envoient des factures en PDF mais diffrent des mises en page. Est-il possible que REGEX nettoie les données de tous les PDF pour obtenir la sortie DESIERD?


C'est une question beaucoup plus grande que la regex que vous demandez à l'origine ici.II n'a aucune expérience de faire cela, cela peut être possible, je recommanderais de demander à une autre question sur Stackoverflow



0
votes

J'utiliserais le fait que la valeur juste avant que celui que vous voulez soit affiché deux fois . Avec ce préamption, nous pouvons savoir où commencer la capture de la valeur que vous recherchez!

Ceci peut être fait en utilisant un groupe de capture et une référence à ce groupe.

La regex serait ^ [\ d,] + \ s + kg \ s + ([\ d,] +) \ s + \ 1 (\ d +) \ s * $ avec le < code> i (insensible) et m ( ^ et $ match lignes début et fin).

Testez ici: https://regex101.com/r/C0PPRG/2

Explication:

  • ^ [\ d,] + correspondra aux numéros et aux virgules une fois ou plus.

  • \ s + pour un ou plusieurs espaces.

  • kg \ s + pour le cas insensible kg mot avec quelques espaces après.

  • ([\ d,] +) pour capturer la première valeur telle que 461,90 ou 159,62.

  • \ 1 est la référence à ce groupe capturé.

  • (\ d +) est le deuxième groupe que vous recherchez: -)


3 commentaires

Cela correspondrait à ce qui suit ",1" Je suppose que cela dépend de la spécification du fichier de données comme cela se produirait et ce qui devrait se produire si Cela fait


@Damo oui, exactement! Eh bien, la meilleure personne à savoir comment écrire la regex est celle qui sait ce que contient les données!


vrai, nous devons deviner aux exigences de véritable entreprise