Expression reguliere et bash

Fermé
bash-beginner - 23 nov. 2009 à 23:55
 bash-beginner - 26 nov. 2009 à 08:36
Bonsoir,
j'aimerai savoir si il existe un équivalent au preg_match (du php) en unix:
Concrètement j'aimerai récupérer des morceaux d'une expression régulière comme le fait le code php ci dessous

<?php
preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
echo "part 1: " . $val[1] . "\n";
echo "part 2: " . $val[2] . "\n";
echo "part 3: " . $val[3] . "\n";
echo "part 4: " . $val[4] . "\n\n";
}
?>
matched: <b>bold text</b>
part 1: <b>
part 2: b
part 3: bold text
part 4: </b>


Cordialement
D'avance merci

3 réponses

jipicy Messages postés 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 901
24 nov. 2009 à 07:44
Salut,

Ne connaissant pas le php, peux-tu nous expliquer ce que fait ta regex et surtout un exemple avant => après de ce que tu voudrais obtenir comme résultat...

Merci ;-)
0
bash-beginner
24 nov. 2009 à 09:20
En fait je sais qu'il existe des dispositifs visant à extraire des morceau d'expression reguliere
Si je reprends l'exemple PHP ci-dessus

On applique l'expression régulière
(<.*>)(.*)(<.*>)
<b>bold text</b>
il met les resultat dans un tableau ce qui permet de récupèré soit tout l'expression soit
des morceaux, les morceaux signalé pas les parenthèses
donc ici il y a 3 morceau
<b>
bold text
</b>

suis-je plus clair ?
cordialement
Merci
0
jipicy Messages postés 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 901
24 nov. 2009 à 09:25
En bash pur, je ne pense pas, bien que le principe de tableau existe...

Avec "sed" c'est possible notamment grâce aux sous-expressions et références arrières, mais on est limité à 9 sous-expressions ;-((
0
bash-beginner
26 nov. 2009 à 08:36
merci c'est ce que je cherchait....
0