{"id":2756,"date":"2025-12-25T07:49:43","date_gmt":"2025-12-25T06:49:43","guid":{"rendered":"https:\/\/artheodoc.fr\/?page_id=2756"},"modified":"2025-12-25T07:49:43","modified_gmt":"2025-12-25T06:49:43","slug":"les-expressions-regulieres-de-base-utilisees-sous-bash","status":"publish","type":"page","link":"https:\/\/artheodoc.fr\/index.php\/les-expressions-regulieres-de-base-utilisees-sous-bash\/","title":{"rendered":"Les expressions r\u00e9guli\u00e8res de base utilis\u00e9es sous Bash"},"content":{"rendered":"\n<p>Voici une documentation comparant les <strong>expressions r\u00e9guli\u00e8res de base<\/strong> (BRE, Basic Regular Expressions) et les <strong>expressions r\u00e9guli\u00e8res \u00e9tendues<\/strong> (ERE, Extended Regular Expressions) utilis\u00e9es sous Bash, notamment avec des outils comme <strong>grep<\/strong>, <strong>sed<\/strong>, et <strong>awk<\/strong>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">M\u00e9tacaract\u00e8res communs aux BRE et ERE<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>M\u00e9tacaract\u00e8res<\/strong><\/th><th><strong>Signification<\/strong><\/th><\/tr><\/thead><tbody><tr><td><code>.<\/code><\/td><td>Correspond \u00e0 n&rsquo;importe quel caract\u00e8re.<\/td><\/tr><tr><td><code>*<\/code><\/td><td>Correspond \u00e0 0 ou plusieurs occurrences du caract\u00e8re ou groupe pr\u00e9c\u00e9dent.<\/td><\/tr><tr><td><code>^<\/code><\/td><td>Correspond au d\u00e9but d&rsquo;une ligne.<\/td><\/tr><tr><td><code>$<\/code><\/td><td>Correspond \u00e0 la fin d&rsquo;une ligne.<\/td><\/tr><tr><td><code>[...]<\/code><\/td><td>Correspond \u00e0 un caract\u00e8re parmi ceux list\u00e9s entre les crochets.<\/td><\/tr><tr><td><code>[^...]<\/code><\/td><td>Correspond \u00e0 un caract\u00e8re <strong>non<\/strong> list\u00e9 entre les crochets.<\/td><\/tr><tr><td><code>\\<\/code><\/td><td>\u00c9chappe un m\u00e9tacaract\u00e8re (le traite comme un caract\u00e8re litt\u00e9ral).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Diff\u00e9rences entre BRE et ERE<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Fonctionnalit\u00e9<\/strong><\/th><th><strong>BRE (Basic Regular Expressions)<\/strong><\/th><th><strong>ERE (Extended Regular Expressions)<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Groupement<\/td><td>\\(&#8230;\\)<\/td><td>(&#8230;)<\/td><\/tr><tr><td>Alternance (OU)<\/td><td>\u00ab\u00a0foo\\|bar\u00a0\u00bb<\/td><td>\u00ab\u00a0foo|bar\u00a0\u00bb<\/td><\/tr><tr><td>Quantificateurs<\/td><td>\\{n\\} (exactement n fois)<\/td><td>{n}<\/td><\/tr><tr><td><\/td><td>\\{n,\\} (au moins n fois)<\/td><td>{n,}<\/td><\/tr><tr><td><\/td><td>\\{n,m\\} (entre n et m fois)<\/td><td>{n,m}<\/td><\/tr><tr><td>Optionnel<\/td><td>\\? (doit \u00eatre \u00e9chapp\u00e9)<\/td><td>?<\/td><\/tr><tr><td>Un ou plusieurs<\/td><td>\\+ (doit \u00eatre \u00e9chapp\u00e9)<\/td><td>+<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Exemples d&rsquo;utilisation sous Bash<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Avec grep<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BRE (par d\u00e9faut avec grep):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">grep \"a\\{2\\}\" fichier.txt  # Cherche \"aa\"<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">grep \"\\(red\\|blue\\) car\" voitures.txt # Chercher \"red car\" ou \"blue car\"<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ERE (avec l&rsquo;option -E):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">grep -E \"a{2}\" fichier.txt  # Cherche \"aa\"<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">grep -E \"(red|blue) car\" voitures.txt # Chercher \"red car\" ou \"blue car\"<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">grep -E \"erreur|avertissement\" fichier.log # Rechercher des lignes contenant soit \"erreur\" soit \"avertissement\"<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">grep -E \"[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\" fichier.txt # Ce motif est une expression r\u00e9guli\u00e8re qui d\u00e9crit une adresse IP version 4 (IPv4)<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Avec sed<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BRE (par d\u00e9faut avec sed):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">sed -n '\/a\\{2\\}\/p' fichier.txt  # Affiche les lignes contenant \"aa\"<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ERE (avec l&rsquo;option -E ou -r):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">sed -E -n '\/a{2}\/p' fichier.txt  # Affiche les lignes contenant \"aa\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Avec awk<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ERE (par d\u00e9faut avec awk):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">awk '\/a{2}\/ {print}' fichier.txt  # Affiche les lignes contenant \"aa\"<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Cas particuliers et bonnes pratiques<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u00c9chappement<\/strong>\u00a0: En BRE, les m\u00e9tacaract\u00e8res <code>?<\/code>, <code>+<\/code>, <code>{<\/code>, <code>|<\/code>, <code>(<\/code>, <code>)<\/code> doivent \u00eatre \u00e9chapp\u00e9s avec \\.<\/li>\n\n\n\n<li><strong>Portabilit\u00e9<\/strong>\u00a0: Les ERE sont plus lisibles et recommand\u00e9es pour les scripts complexes.<\/li>\n\n\n\n<li><strong>Outils<\/strong>: <code>grep -E<\/code>, <code>sed -E<\/code>, et <code>awk<\/code> utilisent les ERE par d\u00e9faut ou via des options.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Exemple complet<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Besoin<\/strong><\/th><th><strong>BRE (grep\/sed)<\/strong><\/th><th><strong>ERE (grep -E\/sed -E)<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Trouver \u00ab\u00a0foo\u00a0\u00bb ou \u00ab\u00a0bar\u00a0\u00bb<\/td><td>grep \u00ab\u00a0foo\\|bar\u00a0\u00bb<\/td><td>grep -E \u00ab\u00a0foo|bar\u00a0\u00bb fichier.txt<\/td><\/tr><tr><td>Trouver 3 chiffres cons\u00e9cutifs<\/td><td>grep \u00ab\u00a0[0-9]\\{3\\}\u00a0\u00bb<\/td><td>grep -E \u00ab\u00a0[0-9]{3}\u00a0\u00bb<\/td><\/tr><tr><td>Trouver un mot optionnel<\/td><td>grep \u00ab\u00a0colou\\(r\\)\\?\u00a0\u00bb<\/td><td>grep -E \u00ab\u00a0colou(r)?\u00a0\u00bb<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">R\u00e9sum\u00e9<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>BRE<\/strong>\u00a0: N\u00e9cessite l&rsquo;\u00e9chappement de nombreux m\u00e9tacaract\u00e8res.<\/li>\n\n\n\n<li><strong>ERE<\/strong>\u00a0: Syntaxe plus intuitive, proche des langages modernes (Python, Perl, etc.).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Exemples d&rsquo;utilisation de * avec BRE et ERE<\/h1>\n\n\n\n<p>Voici des exemples concrets d&rsquo;utilisation du m\u00e9tacaract\u00e8re <strong>*<\/strong> avec les <strong>expressions r\u00e9guli\u00e8res de base (BRE)<\/strong> et les <strong>expressions r\u00e9guli\u00e8res \u00e9tendues (ERE)<\/strong>, notamment avec des outils comme <code>grep -E<\/code>, <code>sed -E<\/code>, et <code>awk<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemples avec grep (par d\u00e9faut en BRE)<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Besoin<\/strong><\/th><th><strong>Commande BRE (avec grep)<\/strong><\/th><th><strong>Explication<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Trouver les lignes contenant \u00ab\u00a0ab*\u00a0\u00bb<\/td><td>grep \u00ab\u00a0abc\\*\u00a0\u00bb fichier.txt<\/td><td>Le <code>\\*<\/code> signifie le caract\u00e8re *.<\/td><\/tr><tr><td>Trouver les lignes contenant un \u00ab\u00a0a\u00a0\u00bb suivi de n&rsquo;importe quel nombre de caract\u00e8res<\/td><td>grep \u00ab\u00a0a.*\u00a0\u00bb fichier.txt<\/td><td>.* signifie \u00ab\u00a0n&rsquo;importe quel nombre de caract\u00e8res apr\u00e8s &lsquo;a'\u00a0\u00bb.<\/td><\/tr><tr><td>Trouver les lignes contenant \u00ab\u00a0colou\u00a0\u00bb suivi optionnellement de \u00ab\u00a0r\u00a0\u00bb<\/td><td>grep \u00ab\u00a0colour\\?\u00a0\u00bb fichier.txt<\/td><td>\\? signifie \u00ab\u00a00 ou 1 occurrence de &lsquo;r'\u00a0\u00bb.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Exemples avec ERE (Extended Regular Expressions)<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Besoin<\/strong><\/th><th><strong>Commande ERE (avec grep -E)<\/strong><\/th><th><strong>Explication<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Trouver les lignes contenant \u00ab\u00a0ab\u00a0\u00bb suivi de 0 ou plusieurs \u00ab\u00a0c\u00a0\u00bb<\/td><td>grep -E \u00ab\u00a0abc*\u00a0\u00bb fichier.txt<\/td><td><code>c*<\/code> signifie \u00ab\u00a00 ou plusieurs &lsquo;c'\u00a0\u00bb.<\/td><\/tr><tr><td>Trouver les lignes contenant un \u00ab\u00a0a\u00a0\u00bb suivi de n&rsquo;importe quel nombre de caract\u00e8res<\/td><td>grep -E \u00ab\u00a0a.*\u00a0\u00bb fichier.txt<\/td><td><code>.*<\/code> signifie \u00ab\u00a0n&rsquo;importe quel nombre de caract\u00e8res apr\u00e8s &lsquo;a'\u00a0\u00bb.<\/td><\/tr><tr><td>Trouver les lignes contenant \u00ab\u00a0colou\u00a0\u00bb suivi optionnellement de \u00ab\u00a0r\u00a0\u00bb<\/td><td>grep -E \u00ab\u00a0colour?\u00a0\u00bb fichier.txt<\/td><td><code>?<\/code> signifie \u00ab\u00a00 ou 1 occurrence de &lsquo;r'\u00a0\u00bb.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p><strong>Sources<\/strong>&nbsp;: Le Chat Mistral<\/p>\n\n\n\n<p><a href=\"https:\/\/chat.mistral.ai\/chat\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/chat.mistral.ai\/chat<\/a><\/p>\n\n\n\n<p>Documentation sur l&rsquo;installation des serveurs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici une documentation comparant les expressions r\u00e9guli\u00e8res de base (BRE, Basic Regular Expressions) et les expressions r\u00e9guli\u00e8res \u00e9tendues (ERE, Extended Regular Expressions) utilis\u00e9es sous Bash, notamment avec des outils comme grep, sed, et awk. M\u00e9tacaract\u00e8res communs aux BRE et ERE M\u00e9tacaract\u00e8res Signification . Correspond \u00e0 n&rsquo;importe quel caract\u00e8re. * Correspond \u00e0 0 ou plusieurs occurrences [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2756","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/artheodoc.fr\/index.php\/wp-json\/wp\/v2\/pages\/2756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/artheodoc.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/artheodoc.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/artheodoc.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/artheodoc.fr\/index.php\/wp-json\/wp\/v2\/comments?post=2756"}],"version-history":[{"count":1,"href":"https:\/\/artheodoc.fr\/index.php\/wp-json\/wp\/v2\/pages\/2756\/revisions"}],"predecessor-version":[{"id":2757,"href":"https:\/\/artheodoc.fr\/index.php\/wp-json\/wp\/v2\/pages\/2756\/revisions\/2757"}],"wp:attachment":[{"href":"https:\/\/artheodoc.fr\/index.php\/wp-json\/wp\/v2\/media?parent=2756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}