Equivalent preg_match_all[PHP] en SHELL
Fermé
devweb
-
Modifié par devweb le 10/07/2012 à 10:56
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 10 juil. 2012 à 15:15
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 10 juil. 2012 à 15:15
A voir également:
- Equivalent preg_match_all[PHP] en SHELL
- Equivalent coco - Accueil - Réseaux sociaux
- Easy php - Télécharger - Divers Web & Internet
- Classic shell windows 11 - Télécharger - Personnalisation
- Equivalent word gratuit - Guide
- Equivalent wawacity - Accueil - Outils
4 réponses
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
7 801
10 juil. 2012 à 11:01
10 juil. 2012 à 11:01
La question c'est les récupérer mais où et pour en faire quoi ?
Avec sed, si tu utilises l'opérateur \( \) tu peux récupérer des morceaux qui matchent avec ton expression régulière et les réutiliser dans la chaîne de remplacement avec \1 et \2. Je ne pense pas que tu puisses aller beaucoup plus loin juste avec sed.
Si ça ne suffit pas à répondre à ton besoin, il faut utiliser un outil plus évolué. Le plus simple est peut-être d'utiliser un langage de script comme par exemple python :
https://stackoverflow.com/questions/3865896/translating-php-s-preg-match-all-to-python
Bonne chance
Avec sed, si tu utilises l'opérateur \( \) tu peux récupérer des morceaux qui matchent avec ton expression régulière et les réutiliser dans la chaîne de remplacement avec \1 et \2. Je ne pense pas que tu puisses aller beaucoup plus loin juste avec sed.
Si ça ne suffit pas à répondre à ton besoin, il faut utiliser un outil plus évolué. Le plus simple est peut-être d'utiliser un langage de script comme par exemple python :
https://stackoverflow.com/questions/3865896/translating-php-s-preg-match-all-to-python
Bonne chance
devweb
Messages postés
26
Date d'inscription
vendredi 2 avril 2010
Statut
Membre
Dernière intervention
23 août 2020
10
10 juil. 2012 à 11:08
10 juil. 2012 à 11:08
Je peux effectivement récupérer les variables avec les parenthèses capturantes, mais le problème est que je ne sais pas à l'avance combien d'éléments doivent matcher dans chacune de mes requêtes.
Je ne sais malheureusement pas programmer avec Python mais je vais tout de même jeter un oeil.
Merci
Je ne sais malheureusement pas programmer avec Python mais je vais tout de même jeter un oeil.
Merci
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
10 juil. 2012 à 11:55
10 juil. 2012 à 11:55
Salut,
Sans garantie vue que je n'ai qu'un maigre exemple pour tester ;-((
;-))
Sans garantie vue que je n'ai qu'un maigre exemple pour tester ;-((
$ cat plop $req = mysql_query('SELECT * FROM 'ma_table' WHERE pseudo="'.$pseudo.'" AND statut="'.$statut.'" '); $ cat script.sed s/\([^ ]*\)[^_]*_\(.*\)/\1 = $db->\2/ h s/[^.]*\.\([^.]*\)\.[^.]*/\1,/g s/\(.*\),/->execute(array(\1));/g x s/"[^"]*"/"?"/g G s/\([^ ]*\)\([^\n]*\)\n\(.*\)/\1\2\n\1\3/ $ sed -f script.sed plop $req = $db->query('SELECT * FROM 'ma_table' WHERE pseudo="?" AND statut="?" '); $req->execute(array($pseudo,$statut)); $
;-))
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 10/07/2012 à 15:36
Modifié par [Dal] le 10/07/2012 à 15:36
Salut,
Avec Perl :
Cela ne va modifier que les lignes dans lesquelles il y a "$req = mysql_query" avec ou sans espaces.
Dal
Avec Perl :
cat plop | perl -e 'while(<STDIN>){ my @matched = /\.(\$.+?)\./g; my $joined = join(",",@matched); if (/^.*\$req\s*=\s*mysql_query/){ $_ =~ s/'\.\$.+?\.'/?/g; $_ =~ s/(^.*\$req\s*=\s*mysql_query\s*)(\(.*\))\s*;/\$req = \$db->query$2; \$req->execute(array($joined));/;} print $_; }'
Cela ne va modifier que les lignes dans lesquelles il y a "$req = mysql_query" avec ou sans espaces.
Dal