Première: Iknowthisquestionhasbeenbeatentodeath.Capturer un groupe répété vs répétition d'un groupe de capture au milieu d'un regex complexe
Deuxième: Je l'ai regardé toutes les ressources (éditeurs en ligne, RexEgg, regular-expressions.info etc ...) Je peux penser au cours des dernières années et je ne peux toujours pas saisir cette partie de regex. Cela ne semble jamais fonctionner pour moi, peu importe ce que j'utilise RegEx.
Maintenant que la maison est tenue hors du chemin:
J'ai une grande quantité de texte que je dois extraire des données à partir de ce que je pense Regex est bien adapté.
Le texte ressemble à ceci:
2017-03-31 09:41:18 EDT [12708-4] paramètres: 1 $ = '0', $ 2 = 'ON', $ 3 = « ON '
de manière assez évidente, je veux les valeurs $1
, $2
et $3
. Cet exemple particulier a 3 variables, mais il est généralement compris entre 1 et 15.
Je veux un regex qui captera les suivantes:
- $ '0'
- $ 2
- « ON '
- $ 3
- 'ON'
Ceci est mon regex, qui correspond au premier groupe:
\d{4}.+\[[\d-]*\].+?parameters:\s((\$\d+)\s?=\s?(['\d+\w+]+))
mais aucune combinaison de points positifs, entre parenthèses et des virgules tout près de ce que produit des que je veux. Même si j'enlève les virgules de la ficelle et que je les coince ensemble, je ne peux pas l'attraper.
Ce type capture tout, mais les groupes ne font pas de sens:
\d{4}.+\[[\d-]*\].+?parameters:\s(((\$\d+)\s?=\s?(['\d+\w+]+),?\s?)+)
Quelqu'un peut-il mettre fin à ma misère ici et me expliquer comment capturer le texte répété dans un regex si le texte est séparé par des personnages dont je ne me soucie pas?
Vous pourriez jeter un oeil à' \ G 'qui correspond à la position, la correspondance précédente terminée.' (?: \ G (?! ^), | paramètres:) \ s + (\ $ \ d +) = '(\ w +)' 'devrait être quelque peu ce que vous êtes –
Je ne pouvais pas obtenir celui-ci pour travailler.Encore seulement en capturer un – Brandon
Essayez de multiples saisies/capturer des mentions de Sebastian avec un motif peu modifié: ['(?: \ G (?! ^), | paramètres :) \ s * (\ $ \ d +) \ s * = \ s * '([^'] +) '\ s * '] (https://regex101.com/r/3nHI53/1). vous donnez 6 groupes, car il ne peut y avoir que le nombre de groupes définis dans le modèle, ce qui donne 3 groupes x 2 groupes dans chaque groupe, si cette approche n'est pas ce dont vous avez besoin, vous ne pouvez pas l'obtenir avec une regex pure. W quel est le langage de programmation? –