Mon motif de regex ressemble à quelque chose comme
<xxxx location="file path/level1/level2" xxxx some="xxx">
Je ne m'intéresse qu'à la partie entre guillemets affectée à l'emplacement. Ne devrait-il pas être aussi facile que ci-dessous sans le commutateur glouton?
/.*location="(.*)".*/
Ne semble pas fonctionner.
Vous devez rendre votre expression régulière non gourmande, car par défaut, "(.*)"
correspond à tous les "file path/level1/level2" xxx some="xxx"
.
Au lieu de cela, vous pouvez rendre votre point-star non-gourmand, ce qui lui fera correspondre le moins de caractères possible:
/location="(.*?)"/
L'ajout d'un ?
sur un quantificateur (?
, *
ou +
) le rend non-gourmand.
location="(.*)"
correspondra du "after location=
au" after some="xxx
à moins que vous ne le rendiez pas gourmand. Donc, soit vous avez besoin de .*?
(c’est-à-dire que vous le fassiez sans être glouton) ou vous remplacez mieux .*
par [^"]*
.
Que diriez-vous
.*location="([^"]*)".*
Cela évite la recherche illimitée avec. * Et correspondra exactement au premier devis.
Utilisez une correspondance non gourmande si votre moteur le permet. Ajouter le ? à l'intérieur de la capture.
/location="(.*?)"/