Modifier un texte en regex

Résolu
frelon71440 Messages postés 4 Date d'inscription dimanche 7 juillet 2024 Statut Membre Dernière intervention 9 juillet 2024 - Modifié le 8 juil. 2024 à 13:54
frelon71440 Messages postés 4 Date d'inscription dimanche 7 juillet 2024 Statut Membre Dernière intervention 9 juillet 2024 - 9 juil. 2024 à 17:01

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 dimanche 7 juillet 2024 Statut Membre Dernière intervention 9 juillet 2024 1
Modifié le 8 juil. 2024 à 13:55

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 40558 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 décembre 2024 9 458
Modifié le 7 juil. 2024 à 14:45

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 dimanche 7 juillet 2024 Statut Membre Dernière intervention 9 juillet 2024 1
Modifié le 8 juil. 2024 à 13:50

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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
Modifié le 8 juil. 2024 à 13:51

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 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
8 juil. 2024 à 14:01

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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717 > mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024
8 juil. 2024 à 21:05

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 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809 > jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024
9 juil. 2024 à 14:44

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

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 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
8 juil. 2024 à 13:58

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 dimanche 7 juillet 2024 Statut Membre Dernière intervention 9 juillet 2024 1
9 juil. 2024 à 17:01

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

0