Modifier un texte en regex

Résolu
frelon71440 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
frelon71440 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Je traduis des jeux anglais en français, et pour aller plus vite, j'aimerais savoir s'il est possible de ne garder qu'un bout de texte. Voici un exemple.

#EVENT 6###############################################################################################################################################
        'event_num': "Event: (Sidney's Homecoming)",
        'unlocked': progress >= 5,
        'progress_needed': progress >= 6,
        'button_idle': Text([
            "Sidney's Homecoming"], outlines=[(1.1, "#000000", 0, 0)], text_align=0.5),
        'button_ypos': 0.08,
        'new_context_call': 'event_info_06',
        }, {
#EVENT 7###############################################################################################################################################
        'event_num': If( ntrcontent,
            "NTR Event: Megan's Visit",
            "Loyalty Event: (Megan's Visit)"),
        'unlocked': schoolprogress >= 2,
        'progress_needed': firstntrblowjob or firstloyaltyblowjob,
        'button_idle': Text([
            "Megan's Visit"], outlines=[(1.1, "#000000", 0, 0)], text_align=0.5),
        'button_ypos': 0.08,
        'new_context_call': 'event_info_07',
        }, {
#EVENT 8###############################################################################################################################################
        'event_num': "Event: (Fixed a Light Bulb)",
        'unlocked': progress >= 4,
        'progress_needed': fixed_bulb,
        'button_idle': Text([
            "Fixed a Light Bulb"], outlines=[(1.1, "#000000", 0, 0)], text_align=0.5),
        'button_ypos': 0.08,
        'new_context_call': 'event_info_08',
        }, {


Il faudrait que je garde juste le texte qui est après Event: (.......) juste ce que j'ai mis entre parenthèse.

Vous allez certainement me dire pourquoi ne pas faire à la main. J'ai 107 events juste rien que sur une page !

Merci

A voir également:

6 réponses

frelon71440 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   1
 

Avec notepad++,  j'ai réussi grâce aux expressions régulières suivantes :

\n(.*)Event: (.*)",(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)
\n            t = t.replace ("$2", "$2")
EVENT(.*)\n            t =(.*)
$2

Supprimer les espace entre les lignes :

\s*\R
\n
1
jee pee Messages postés 41347 Date d'inscription   Statut Modérateur Dernière intervention   9 667
 

Bonjour,

En utilisant l’éditeur Notepad++, plutôt que de chercher un regexp qui fait tout en une fois, on peut faire simple en plusieurs étapes :

Marquer les lignes qui contiennent Event:
avec CTRL+M, rechercher : Event: , cocher Marquer les lignes + Respecter la casse, et Rechercher tout, les lignes visées ont une marque bleue

Supprimer les lignes non marquées :
Menu Recherche/Signet/Supprimer les lignes non marquées

Supprimer début et fin de ligne :
avec CTRL+H,  rechercher ^(.*)(Event: )(.*)(".*)$ remplacer par $3, cocher respecter la casse + Expression régulière, et Remplacer tout

(Sidney's Homecoming)
Megan's Visit
(Megan's Visit)
(Fixed a Light Bulb)

Il faut peut être avant que tu supprimes une des lignes NTR Event: ou Loyalty Event: suivant leur utilité


0
frelon71440 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   1
 

Merci, mais si je fais ça, c'est pour éviter de faire du ligne par ligne, car s'il faut que je marque chaque ligne, à ce compte-là, je fais manuellement ça va plus vite en supprimant.

J'ai eu quelque chose de concluant en faisant ça :

\n(.*)Event: (.*)",(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)
\n            t = t.replace ("$2", "$2")
0
jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 

Bonjour ,

Une autre solution... vu que c'est un JSON, il suffit de prendre n'importe quel langage de programmation (PHP, JavaScript, python..... ) et de boucler dessus pour récupérer les données qui t'intéressent...


0
mamiemando Messages postés 33749 Date d'inscription   Statut Modérateur Dernière intervention   7 871
 

Hello jordane45,

L'idée est bonne dans l'absolu, mais ce n'est pas du JSON (voir notamment les commentaires avec des #, qui n'existent pas en JSON, et la présence de prédicats par exemple pour les valeurs associées aux clés unlocked, ou l'appel de fonctions (If, Text, etc). Je pense qu'en réalité, le texte proposé est du code écrit python. Bref, la solution que tu proposes ne s'applique malheureusement pas ici.

0
jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention   4 746 > mamiemando Messages postés 33749 Date d'inscription   Statut Modérateur Dernière intervention  
 

Si toutes la structure du fichier ressemble à ce qui nous a été présenté, il suffit de faire un premier traitement pour supprimer les lignes avec les #  et reconstruire un json propre.

La solution peut fonctionner.

Mais visiblement, le demandeur à trouvé une solution qui lui convenait à base des regex. Ma solution n'est donc pas utile, quelle que soit la difficulté à la mettre en oeuvre.

0
mamiemando Messages postés 33749 Date d'inscription   Statut Modérateur Dernière intervention   7 871 > jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention  
 

Oui tout à fait. Ceci dit, supprimer les lignes de commentaires ne serait pas suffisant à cause des clés que j'ai mentionnées. Par contre ce qui aurait pu être fait c'est charger la structure à l'aide de ast.literal_eval. Néanmoins, merci pour ta contribution et bonne continuation :-)

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PierrotLeFou
 

Je n'ai pas vraiment compris ce que tu voulais faire. Voici ce que j'aurais proposé:

sed -E "/Event:/!d;s/.*Event[^()]*\(([^)]*)\).*/\1/"

0
mamiemando Messages postés 33749 Date d'inscription   Statut Modérateur Dernière intervention   7 871
 

Bonjour Pierrot, l'auteur semble avoir résolu son problème depuis (voir message #4). Par ailleurs, la commande que tu proposes ne semble pas marcher.

0
frelon71440 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   1
 

Bonjour en gros c'es du rpy en python je crois, je voulais transformer du texte en t.replace.

0