Expression reguliere et bash

bash-beginner -  
 bash-beginner -
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

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. bash-beginner
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  3. bash-beginner
     
    merci c'est ce que je cherchait....
    0