-1
votes

Expression régulière à inclure du mot à un point-virgule en python

J'ai donc une chaîne comme suit: xxx

Je veux tout récupérer de "données =" à la finale ";"

aussi, il n'y a pas non plus Espaces ou points-virgules à l'intérieur des données

EDIT:

"Données réelles": data = {"info": {"foo": "bar", "bla": "boo"};

sortie: '{"info": {"foo": "bar", "bla": "boo"}' < / p>

fais cela dans un script python à l'aide de re , une fois extrait, je la sérialise dans JSON


2 commentaires

Veuillez afficher des données réelles et quelle sera votre production attendue. Est-ce dans un éditeur, sélectionnez une instruction ou une variable de programme? Quel système d'exploitation, programme, RDBMS ou langue? Tous les moteurs Regex ne sont pas créés égaux.


@Agary_w Voir Modifier


3 Réponses :


0
votes

Rien de fantaisie nécessaire; Vous pouvez simplement utiliser / data = \ s +; / code>

Ceci capture data = code>, puis tout caractère non-espaces, puis Code>. p>

p>

const string = '[OMITTED] data={{...{...}...{..}}}; [OMITTED]';
const regex = /data=\S+;/

console.log(string.match(regex)[0]);


0 commentaires

0
votes

Vous pouvez utiliser (? :

  • (? lookbehind: il va ancrer juste après data = strong> string li>
  • (? =;) code> lookahead: il va ancrer juste avant ; strong> string li>
  • . *? code>: il correspondra à tous les caractères entre les ancres li> ul>

    p>

    const string = 'data={"info":{"foo":"bar","blah":"boo"};';
    const regex = /(?<=data=).*?(?=;)/mg;
    
    console.log(string.match(regex)[0]);


0 commentaires

0
votes

Celui-ci est strict pour trouver l'objet afin que le char { doit être après data = avoir quelque chose entre, y compris le newline , et Il permet aux espaces après = et } xxx

Il est bon de l'avoir strict car il pourrait y avoir une autre variable nommée données

https://regex101.com/r/0wvkce/2


0 commentaires