Bonjour,

Je travaille sur le script du jeu vidéo GTA IV et n'arrive pas à me sortir d'affaire avec les regex.

Voici un extrait du script sur lequel je travaille :


Dave    Daddy's back, you bitches... Daddy's back, you bitches!
Niko    Dave, come on. [knocking on door] Come on Dave.
Hossan  Niko? What are you doing?
Niko    Dave is not coming.
Hossan  Ah, ignore him. Come on we got to get this thing ready before we dock.
[Hossan and Niko climb up a ladder to a higher deck.]
Hossan  Let's go. Here, pass me that. There. Whooh yeah! There she is...
        Liberty City.
Niko    Yeah.
Hossan  You ever been?
Niko    No.
Hossan  Crazy place, Niko.
Niko    What you going to do?
Hossan  I might come back on board... or I might try to make a go of it. Like
        they say, it is the land of opportunity. I always wanted to make it
        big... own a nice place, get a dog, a house... live the dream!
Niko    Like my cousin.
Hossan  Oh yeah?
Niko    Yes - he's got the lot - house, women, cars, parties... he writes me in
        these wild emails, and after I got into trouble, I thought maybe uh...
        and then I got this gig, and I spend the next seven months with you
        fine people and I forget... After the war finished, I couldn't get a
        job, nobody could... so I, uh, did some dumb things and got involved
        with some idiots...

**Ce que je veux

Récupérer dans un premier groupe le nom du locuteur et dans un second l'ensemble de ses paroles.

**Ce que j'obtiens

La regex que j'utilise : (^[A-Z].+?)\s.+?([A-Z].+)

Fonctionne parfaitement lorsque le dialogue est sur une ligne unique mais ne me permet pas de récupérer les dialogues sur plusieurs lignes (par exemple, la dernière intervention de Nico dans l'extrait que je vous ai joins). J'avoue que je sèche complètement pour récupérer cela ... quelqu'un aurait une piste de réfléxion que je pourrai approfondir ?

Merci d'avance !

1 réponse


Salut,

il faut que tu autorises les minuscules où est la partie script car dans le cas d'un retour à la ligne il n'y a pas de majuscules : [A-Z].+ => [a-zA-Z].+ ce qui donne, en remplaçant [a-z] et [a-Z] par \w:

(^[\w].+?|\s+)\s+([\w].+)