Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression

/
/
g

Test String

Code Generator

Generated Code

# coding=utf8 # the above tag defines encoding for this document and is for Python 2.x compatibility import re regex = r"#([a-fA-F0-9]{3})([a-fA-F0-9]{3})?(?=\W?)" test_str = ("/* Ce fichier contient les classes CSS personnalisées */\n\n" "/* **************************************** couleurs ******************************************* */\n" "@coldisp: #090;\n" "@colindisp: #FA0;\n" "@colweekend: #FA0;\n" "@colconges: #F00;\n" "@colreservations: #FA0;\n" "@colhoraires: #850;\n" "@colferie: #9CF;\n" "@colrien: #FFF;\n\n" "@colrupturesfond: #A8D089;\n" "@colrupturestext: #000000;\n\n" "@colbaronglefond: #CCEFCB;\n" "@colbarongletext: #000000;\n\n" "@colbaroutilfond: #DBF0CC;\n" "@colbaroutiltext: #000000;\n\n" "@colbartitrefond: #315E0F;\n" "@colbartitretext: #FFFFFF;\n\n" "@colbordures: #BBE899;\n\n" "/* **************************** fonctions de dégradés verticaux ******************************* */\n" ".degradev (@color1, @color2) {\n" " background-color: @color2;\n" " background-image: -webkit-linear-gradient(top, @color1, @color2);\n" " background-image: -moz-linear-gradient(top, @color1, @color2);\n" " background-image: -o-linear-gradient(top, @color1, @color2);\n" " background-image: -ms-linear-gradient(top, @color1, @color2);\n" " background-image: linear-gradient(top, @color1, @color2);\n" "}\n" ".degradev (@color1, @color2, @color3) {\n" " background-color: @color2;\n" " background-image: -webkit-linear-gradient(top, @color1, @color2, @color3);\n" " background-image: -moz-linear-gradient(top, @color1, @color2, @color3);\n" " background-image: -o-linear-gradient(top, @color1, @color2, @color3);\n" " background-image: -ms-linear-gradient(top, @color1, @color2, @color3);\n" " background-image: linear-gradient(top, @color1, @color2, @color3);\n" "}\n" ".degradev (@color1, @color2, @color3, @color4) {\n" " background-color: @color2;\n" " background-image: -webkit-linear-gradient(top, @color1, @color2, @color3, @color4);\n" " background-image: -moz-linear-gradient(top, @color1, @color2, @color3, @color4);\n" " background-image: -o-linear-gradient(top, @color1, @color2, @color3, @color4);\n" " background-image: -ms-linear-gradient(top, @color1, @color2, @color3, @color4);\n" " background-image: linear-gradient(top, @color1, @color2, @color3, @color4);\n" "}\n\n" ".degradev (@color1, @color2, @color3, @color4, @color5) {\n" " background-color: @color2;\n" " background-image: -webkit-linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n" " background-image: -moz-linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n" " background-image: -o-linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n" " background-image: -ms-linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n" " background-image: linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n" "}\n\n" ".degradev (@color1, @color2, @color3, @color4, @color5, @color6) {\n" " background-color: @color2;\n" " background-image: -webkit-linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n" " background-image: -moz-linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n" " background-image: -o-linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n" " background-image: -ms-linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n" " background-image: linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n" "}\n\n" "/* *********************************** fonctions de dégradés horizontaux ********************************** */\n" ".degradeh (@color1, @color2) {\n" " background-color: @color2;\n" " background-image: -webkit-linear-gradient(to left, @color1, @color2);\n" " background-image: -moz-linear-gradient(to left, @color1, @color2);\n" " background-image: -o-linear-gradient(to left, @color1, @color2);\n" " background-image: -ms-linear-gradient(to left, @color1, @color2);\n" " background-image: linear-gradient(to left, @color1, @color2);\n" "}\n" ".degradeh (@color1, @color2, @color3) {\n" " background-color: @color2;\n" " background-image: -webkit-linear-gradient(to left, @color1, @color2, @color3);\n" " background-image: -moz-linear-gradient(to left, @color1, @color2, @color3);\n" " background-image: -o-linear-gradient(to left, @color1, @color2, @color3);\n" " background-image: -ms-linear-gradient(to left, @color1, @color2, @color3);\n" " background-image: linear-gradient(to left, @color1, @color2, @color3);\n" "}\n" ".degradeh (@color1, @color2, @color3, @color4) {\n" " background-color: @color2;\n" " background-image: -webkit-linear-gradient(to left, @color1, @color2, @color3, @color4);\n" " background-image: -moz-linear-gradient(to left, @color1, @color2, @color3, @color4);\n" " background-image: -o-linear-gradient(to left, @color1, @color2, @color3, @color4);\n" " background-image: -ms-linear-gradient(to left, @color1, @color2, @color3, @color4);\n" " background-image: linear-gradient(to left, @color1, @color2, @color3, @color4);\n" "}\n\n" ".toolbar_icon {\n" " background-size: 24px;\n" "}\n\n" "/* ****************************** valeurs par défaut ****************************** */\n\n\n" "iframe[seamless]{\n" " background-color: transparent;\n" " border: 0px none transparent;\n" " padding: 0px;\n" "}\n\n\n" "//.x-grid-row .x-grid-cell,\n" ".x-grid-data-row .x-grid-cell,\n" ".x-grid-group-title {\n" " font-family: \"Segoe UI\", \"tahoma\", \"arial\", \"verdana\", sans-serif;\n" "}\n\n" ".x-grid-row-summary .x-grid-cell-inner {\n" " font-weight: bold !important;\n" " font-size: 13px;\n" "}\n\n" ".x-panel-header-text-default-framed,\n" ".x-tab button,\n" ".x-panel-header-default,\n" ".x-panel-header-text-default,\n" ".x-btn-inner,\n" ".x-fieldset-header {\n" " font-size: 12px !important;\n" "}\n\n" ".x-grid-with-row-lines .x-grid-cell-inner {\n" " line-height: 21px;\n" " white-space: normal;\n" "}\n\n" "//.x-grid-row .x-grid-cell {\n" ".x-grid-data-row .x-grid-cell {\n" " font-size: 13px;\n\n" " a {\n" " text-decoration: none;\n" " }\n" "}\n\n\n" "/* enlève le padding par défaut dans les cellules des grids*/\n" ".x-grid-cell-inner,\n" ".x-grid-group-hd {\n" " padding: 0 !important;\n" "}\n\n" "/* corrige le padding des cellules de treeview */\n" "/*.x-tree-view .x-grid-cell-inner {\n" " padding: 3px !important;\n" "}\n" "*/\n" ".x-tree-view .x-grid-cell-inner-treecolumn {\n" " padding: 3px !important;\n" "}\n\n\n" "/* dossier fermé */\n" ".x-tree-icon-parent {\n" " background-image: url(\"../resources/images/folder_closed_16x16.png\");\n" "}\n\n" "/* dossier ouvert */\n" ".x-grid-tree-node-expanded .x-tree-icon-parent {\n" " background-image: url(\"../resources/images/folder_16x16.png\");\n" "}\n\n\n" "/* corrige le padding par défaut dans les entêtes de colonne des grids*/\n" "/* et centre les entete de colonne */\n" ".x-column-header-inner {\n" " text-align: center !important;\n" " padding: 3px 0px;\n" "}\n\n" ".x-grid-group-title {\n" " font-size: 11px;\n" " line-height: 18px;\n" " height: 18px;\n" " vertical-align: middle;\n\n" " .degradeh(#2f323f, #2e65a7, #2f323f);\n" " background-color: #2F323F !important;\n" " color: #FFF;\n" "}\n\n" ".x-boundlist-list-ct ul {\n" " padding: 0;\n" " list-style-type: none;\n" "}\n\n" ".x-timepicker {\n" " .x-boundlist-item {\n" " text-align: center;\n" " }\n" "}\n\n" ".x-grid-cell.vrai, .x-grid-cell.faux {\n" " font-size: 18px;\n" "}\n" ".x-grid-cell.vrai {\n" " color: #060;\n" "}\n" ".x-grid-cell.faux {\n" " color: #900;\n" "}\n\n\n\n" "/* ************************************************* commun ******************************************************* */\n" ".handcursor {\n" " cursor: pointer;\n" "}\n\n" ".imgbackground {\n" " width: 100%;\n" " bottom: 0px;\n" " left: 0px;\n" " position: absolute;\n" "}\n\n" ".zindex1 {\n" " z-index: 1;\n" "}\n\n" ".whitebg {\n" " z-index: 1;\n" "}\n\n" ".whitebg .x-panel-body {\n" " background-color: rgba(255,255,255,0.5) !important;\n" "}\n\n" ".champ-email input[type=text] {\n" " background : #fff url(\"../resources/images/email_16x16.png\") 4px 50% no-repeat;\n" " padding-left: 25px;\n" " cursor: pointer;\n" "}\n\n" ".ligne-vide {\n" " display: none;\n" "}\n\n" ".champ-gmaps textarea {\n" " background: #ffffff url(\"../resources/images/localisation_16x16.png\") no-repeat 99% 8%;\n" " padding-left: 10px;\n" " padding-right: 25px;\n" " cursor: pointer;\n" "}\n\n" "/* ************************************************* spécifique **************************************************** */\n" "/* header */\n\n" "#headerpanel {\n\n" " #container_welcome {\n\n" " font-family: 'sinkin_sans', Arial, sans-serif;\n\n" " /* titre de l'application */\n" " #txt_welcome {\n" " vertical-align: bottom;\n" " /*height: 62px;*/\n\n" " #titre {\n" " text-shadow: 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF;\n" " font-size: 24px;\n" " font-weight: normal;\n" " line-height: 62px;\n" " margin: 0px;\n\n" " a:focus {\n" " outline: none;\n" " }\n\n" " a, a:link, a:visited {\n" " text-decoration: none;\n" " color: #369;\n" " padding-bottom: 2px;\n" " }\n\n" " a:hover {\n" " text-decoration: none;\n" " border-bottom: solid 2px #369;\n" " }\n" " }\n" " }\n\n\n" " #container_messagedujour-innerCt {\n" " vertical-align: middle !important;\n\n" " /* caroussel des messages */\n" " #messagedujour {\n" " margin: 0px;\n" " text-align: left;\n\n" " .viewport {\n" " width: 100%;\n" " max-width: 562px;\n" " height: 30px;\n" " overflow: hidden;\n" " position: relative;\n" " display: inline-block;\n" " vertical-align: middle;\n\n" " .overview {\n" " margin: 0px;\n" " list-style: none;\n" " position: absolute;\n" " left: 0\n" " top: 0;\n\n" " .page {\n" " margin: 0px;\n" " padding: 0px;\n" " float: left;\n" " border: none;\n" " width: 550px;\n\n" " p {\n" " margin: 0px;\n" " padding: 0px;\n" " line-height: 30px;\n" " }\n" " }\n" " }\n" " }\n\n" " .bullets {\n" " /*overflow:hidden;*/\n" " /*height: 1%;*/\n" " list-style: none;\n" " clear: both;\n" " margin: 0px;\n" " display: inline-block;\n" " padding: 0px;\n" " vertical-align: middle;\n\n" " li {\n" " float: left;\n" " }\n\n" " .bullet {\n" " background-color: #fff;\n" " text-decoration: none;\n" " text-align: center;\n" " padding: 0px 4px;\n" " color: #555555;\n" " font-size: 13px;\n" " font-weight: bold;\n" " display: block;\n\n" " &.active {\n" " color: #fff;\n" " background-color: #555555;\n" " }\n" " }\n" " }\n" " }\n" " }\n" " }\n\n" " #container_profil {\n\n" " background-image: url(\"../resources/images/header_ident3.png\");\n" " background-repeat: no-repeat;\n" " background-position: right;\n" " font-family: 'sinkin_sans', Arial, sans-serif;\n\n" " #lbl_profil_qui {\n" " .x-form-display-field {\n" " color: #EEE;\n" " font-size: 18px;\n" " text-align: center;\n" " font-family: 'sinkin_sans', Arial, sans-serif;\n" " }\n\n" " .x-form-item-body {\n" " vertical-align: bottom;\n" " }\n" " }\n\n" " #lbl_profil_connexion {\n" " display: table-cell;\n" " vertical-align: middle;\n" " }\n\n" " #login_link:link, #login_link:link, #login_link:visited {\n" " color: #EEE;\n" " font-size: 14px;\n" " text-decoration: none;\n" " }\n" " #login_link:hover{\n" " color: #FFF;\n" " text-decoration: underline;\n" " }\n" " }\n" "}\n\n\n" "#grid_adh_suiviexercice .x-grid-cell-inner {\n" " line-height: 13px;\n" " white-space: normal;\n" "}\n" "#grid_adh_exercices {\n" " .x-grid-cell-inner {\n" " white-space: nowrap;\n" " }\n" "}\n\n" "/* corrige un bug */\n" "#menu_reservationsSemaine .x-grid-cell-inner {\n" " white-space: nowrap;\n" "}\n\n\n" "#about h1 {\n" " font-size: 20px;\n" "}\n\n" "dl.credits, dl.aide, dl.releasenotes {\n" " margin-left: 20px;\n\n" " dt {\n" " font-weight: bold;\n" " font-size: 16px;\n" " margin-top: 30px;\n" " }\n\n" " dd {\n" " margin-left: 25px;\n\n" " strong {\n" " font-weight: 700 !important;\n" " }\n" " }\n" "}\n\n\n\n\n\n" "/* PLANNING ET RESERVATIONS */\n\n" ".activite, .reunion {\n" " &.disponible {\n" " background-color: @coldisp;\n" " border-left: solid 10px @coldisp;\n" " border-right: solid 2px lighten(@coldisp, 30%);\n" " }\n\n" " &.indisponible {\n" " background-color: @colindisp;\n" " border-left: solid 10px @colindisp;\n" " border-right: solid 2px lighten(@colindisp, 30%);\n" " }\n\n" " &.conges {\n" " background-color: @colconges;\n" " border-left: solid 10px @colconges;\n" " border-right: solid 2px lighten(@colconges, 30%);\n" " }\n\n" " &.ferie {\n" " background-color: @colferie;\n" " border-left: solid 10px @colferie;\n" " border-right: solid 2px lighten(@colferie, 30%);\n" " }\n\n" " .contenu {\n" " background-color: rgba(255,255,255,0.90);\n" " padding: 10px;\n" "/* left: 10px; /* /* mettre à 0 pour mettre la bande à droite */\n" " position: relative;\n" " border-bottom: dotted 1px #AAA;\n\n" " .typeactivite, .lieuactivite, .libactivite, .typereunion, .lieureunion, .libreunion, .organisateur, .grptrav, .techniciens {\n" " margin: 5px;\n" " padding: 0;\n" " list-style-type: none;\n" " }\n\n" " .horaireconteneur {\n" " margin: 0px 5px 5px 5px;\n" " }\n\n" " .complementactivite {\n" " position: absolute;\n" " right: 0px;\n" " top: 0px;\n" " width: 12px;\n" " opacity: 0.75;\n" " }\n\n" " .conteneur_trajet {\n" " border: solid 2px #CCC;\n" " background-color: #FFF;\n" " margin-top: 10px;\n" " padding: 5px;\n\n" " a img {\n" " margin-right: 5px;\n" " }\n\n" " a, a:link, a:visited {\n" " color: #16529C;\n" " text-decoration: none;\n" " }\n\n" " a:hover, a:focus {\n" " text-decoration: underline;\n" " }\n" " }\n" " }\n\n" " &:last-child .contenu {\n" " border-bottom: none;\n" " }\n\n" " .horaire, .special {\n" " font-weight: bold;\n\n" " &.debut:after {\n" " content: \" - \";\n" " }\n" " }\n\n" " .special:after {\n" " content: \" : \";\n" " }\n\n" " .organisateur a, .techniciens a {\n" " color: #16529C;\n" " text-decoration: none;\n\n" " &:hover, &:focus {\n" " text-decoration: underline;\n" " }\n" " }\n\n" " ul.grptrav li, ul.techniciens li {\n" " width: 100%;\n" " min-height: 18px;\n\n" " .mailtec {\n" " margin: 0px 6px;\n" " }\n\n" " .alltecs {\n" " font-weight: bolder;\n" " }\n" " }\n\n" " span.organisateur {\n" " display: block;\n\n" " .mailtec {\n" " margin: 0px 6px;\n" " }\n\n" " }\n\n" " .lieuactivite, .libactivite {\n" " display: block;\n" " color: #999;\n" " font-size: small;\n" " }\n\n" " ol.visites {\n" " padding: 10px;\n" " font-size: 11px;\n" " margin-left: 10px;\n\n" " li {\n" " list-style: decimal;\n\n" " a {\n" " color: #16529C;\n" " text-decoration: none;\n\n" " &.trajet {\n" " display: inline-block;\n" " margin: 5px 0px 15px 36px;\n" " }\n\n" " &:hover, &:focus {\n" " text-decoration: underline;\n" " }\n" " }\n" " }\n\n" " li:last-child a.trajet{\n" " margin-bottom: 0px;\n" " }\n" " }\n\n" " &:last-child {\n" " border-bottom: none;\n" " }\n" "}\n\n" "#menu_planning,\n" "#menu_reservationsSemaine {\n\n" " .x-grid-data-row .x-grid-cell {\n" " border-top: 0px !important;\n" " border-bottom: 1px solid #D2D2D2 !important;\n" " }\n\n" " .x-grid-rowbody:empty {\n" " padding: 0;\n" " }\n\n" " .x-grid-with-row-lines .x-grid-cell {\n" " border-top-width: 0px !important;\n" " }\n\n" " .x-grid-group-hd {\n" " padding: 0;\n" " border-top: 2px solid #99BBE8;\n" " border-bottom: none;\n\n" " .x-grid-group-title {\n" " font-size: 15px;\n" " line-height: 26px;\n" " height: 26px;\n" " white-space: normal;\n" " }\n" " }\n" "}\n\n\n\n\n\n\n\n\n\n\n" "/* CONGES et RESERVATIONS ANNUELLES */\n" "#grid_conges {\n" " .journee {\n" " &.ferie, &.weekend, &.ouvre, &.rien {\n" " .contenu {\n" " line-height: 32px;\n" " }\n" " }\n" " &.conge, &.ferie {\n" " .contenu {\n" " line-height: 16px;\n" " }\n" " }\n" " }\n" "}\n" "#grid_reservations_annee {\n" " .journee {\n" " .contenu {\n" " height: 64px;\n" " .toutseul {\n" " line-height: 64px;\n" " }\n" " }\n" " }\n" "}\n\n" "#grid_conges, #grid_reservations_annee {\n\n" " /* ruptures */\n" " .x-grid-group-hd .x-grid-group-title {\n" " padding: 0px 5px 0px 50px;\n" " }\n\n" " .x-column-header-text {\n" " font-weight: bold;\n" " }\n\n" " /* cellules */\n" " .x-grid-cell {\n" " border-top: solid 1px #fff !important;\n" " border-bottom: none;\n" " background-color: #BFE5BF;\n" " }\n\n" " .journee {\n\n" " &.ferie, &.weekend, &.ouvre, &.rien {\n\n" " .contenu {\n" " background-color: rgba(255, 255, 255, 0.75);\n" " width: 98%;\n" " left: 0px;\n" " text-align: center;\n\n" " vertical-align: middle;\n\n\n" " a, a:link, a:visited {\n" " text-decoration: none;\n" " color: #3C4B83;\n" " margin-bottom: 5px;\n" " font-weight: bold;\n" " }\n\n" " a:hover {\n" " text-decoration: underline;\n" " }\n\n" " p {\n" " margin: 0;\n" " }\n" " }\n" " }\n\n" " &.rien {\n" " background-color: @colrien;\n" " }\n\n" " &.weekend {\n" " background-color: @colweekend;\n" " }\n\n" " &.ouvre {\n" " background-color: @coldisp;\n" " }\n\n" " &.rsvt {\n" " background-color: @colreservations;\n\n" " .contenu {\n" " .descjourhoraires {\n" " color: @colhoraires;\n" " font-weight: bold;\n" " }\n" " }\n" " }\n\n" " &.conge {\n" " background-color: @colconges;\n" " }\n\n" " &.ferie {\n" " background-color: @colferie;\n" " }\n\n" " &.conge, &.rsvt {\n\n" " img {\n" " float: left;\n" " margin: 1px -16px 1px 1px;\n\n" " }\n\n" " &.matin, &.aprem {\n" " border-left: dotted 1px #AAA;\n\n" " .contenu {\n" " width: 96%;\n" " }\n" " }\n\n" " &.matin {\n" " width: 49%;\n" " float: left;\n" " }\n\n" " &.aprem {\n" " width: 51%;\n" " float: right;\n" " }\n" " }\n" " }\n" "}\n\n\n\n" "/* Conges par secteurs */\n" "#grid_congesSecteur {\n" " .x-grid-cell-inner {\n" " height: 40px;\n\n" " .journee {\n" " display: block;\n" " width: 100%;\n" " height: 100%;\n" " border-style: dotted !important;\n" " border-width: 1px !important;\n\n" "/* &.ouvre {\n" " background-color: #EEE;\n" " }*/\n\n" " &.ferie {\n" " background-color: #9CF;\n" " border-color: #00F;\n" " }\n\n" " &.weekend {\n" "/* background-color: #F28282;\n" " border-color: #000;\n" "*/ background-color: rgba(200, 200, 200, 0.17);\n" " border: none !important;\n" " }\n\n" " &.conge {\n" " background-color: #FAA;\n" " border-color: #F00;\n\n" " &.jour {\n\n" " }\n\n" " &.matin {\n" " width: 50%;\n" " float: left;\n" " /*\n" " height: 50%;\n" " margin-bottom: 50%;\n" " */\n" " background-color: #FFAA66;\n" " }\n\n" " &.aprem {\n" " width: 50%;\n" " float: right;\n" " /*\n" " height: 50%;\n" " margin-top: 50%;\n" " */\n" " background-color: #FF7575;\n" " }\n" " }\n\n" " &.travail {\n" " background-color: #AFA;\n" " border-color: #0F0;\n" " }\n\n" " &.rien {\n" " border: none !important;\n" " }\n\n" " }\n\n" " .nom_technicien {\n" " text-align: right;\n" " margin-right: 5px;\n\n" " a {\n" " text-decoration: none;\n\n" " &:link, &:visited {\n" " color: #3C4B83\n" " }\n" " }\n" " }\n\n" " .actions_technicien {\n" " float: right;\n" " padding: 5px;\n" " }\n" " }\n\n" " .x-column-header {\n" " &.aujourdhui, &.ferie, &.weekend, &.aujourdhui .x-column-header-text, &.ferie .x-column-header-text, &.weekend .x-column-header-text {\n" " font-weight: normal;\n" " color: #000;\n" " }\n\n" " &.aujourdhui {\n" " .degradev (#F88, #F00);\n" " }\n\n" " &.ferie {\n" " .degradev (#E9E9FF, #D3D4FF);\n" " }\n\n" " &.weekend {\n" " .degradev (#E9E9E9, #D3D4D6);\n" " }\n" " }\n" "}\n\n\n" "/* ACCUEIL */\n" "#grid_activite {\n" "// .x-grid-row .x-grid-cell {\n" " .x-grid-data-row .x-grid-cell {\n" " vertical-align: middle;\n" " }\n" "}\n\n" "/*.x-grid-row .x-grid-cell .aujourdhui {*/\n" ".x-grid-data-row .x-grid-cell.aujourdhui {\n" " .activite, .reunion {\n" " .contenu {\n" " background-color: rgba(255, 255, 255, 0.85);\n" " }\n" " }\n" "}\n\n" ".lbl_sem {\n" " font-size: 24px;\n" " font-weight: bold;\n" "}\n\n\n" ".x-column-header {\n" " &.aujourdhui, &.ferie, &.weekend, &.aujourdhui .x-column-header-text, &.ferie .x-column-header-text, &.weekend .x-column-header-text {\n" " font-weight: bold;\n" " color: #FFF;\n" " .x-column-header-over {\n" " color: #000;\n" " }\n" " }\n\n" " &.aujourdhui {\n" " .degradev (#F88, #F00);\n" " }\n\n" " &.ferie {\n" " .degradev (#88F, #00F);\n" " }\n\n" " &.weekend {\n" " .degradev (#F88, #F00);\n" " }\n" "}\n\n" ".action.email, .action.conges {\n" " margin-right: 10px;\n" " margin-top: 5px;\n" " float: right;\n" "}\n\n" ".x-grid-cell-inner,\n" ".x-grid-group-hd {\n" " .x-grid-group-title .technicien, .x-grid-group-title .materiel {\n" " display: inline-block;\n" " width: 100%;\n\n" " .nomprenom, .description {\n" " display: inline-block;\n" " padding-left: 27px;\n\n" " img {\n" " vertical-align: middle;\n" " margin: 0px 2px 3px 0px;\n" " }\n" " }\n\n" " .actions {\n" " display: inline-block;\n" " float: right;\n\n" " .secteur, .tpstrav {\n" " margin-right: 20px;\n" " display: inline-block;\n" " }\n\n" " .tpstrav {\n" " min-width: 50px;\n" " }\n\n" " .secteur {\n" " min-width: 180px;\n" " }\n\n" " .code {\n" " min-width: 40px;\n" " display: inline-block;\n" " }\n\n" " .tpstrav + a {\n" " min-width: 90px;\n" " }\n\n" " .tpstrav + a, .tpstrav + a {\n" " display: inline-block;\n" " }\n\n" " .telephone {\n" " &.bureau {\n" " background-image: url(\"../resources/images/telephone_16x16.png\");\n" " min-width: 70px;\n" " }\n\n" " &.portable {\n" " background-image: url(\"../resources/images/phone_16x16.png\");\n" " min-width: 106px;\n" " }\n" " background-position: 0 50%;\n" " background-repeat: no-repeat;\n" " padding-left: 20px;\n" " display: inline-block;\n" " }\n\n" " .envoisms {\n" " margin-right: 20px;\n\n" " img {\n" " vertical-align: middle;\n" " }\n" " }\n" " }\n" " }\n\n" " > .technicien, > .materiel {\n" " display: none;\n" " }\n\n" " > .email {\n" " float: right;\n" " margin: 5px;\n" " }\n" "}\n\n" "#grid_social_contrats,\n" "#grid_social_dashboard,\n" "#grid_social_historique,\n" "#grid_suivi_donnees_journalieres,\n" "#grid_suivi_donnees_hebdomadaires,\n" "#form_suivi_donnees_mensuelles,\n" "#grid_suivi_synthese {\n" " .x-grid-cell-inner { /*,\n" " .x-grid-group-hd {*/\n" " padding: 2px 6px 4px !important;\n" " }\n\n" "// .x-grid-row, .x-grid-row-summary {\n" " .x-grid-data-row, .x-grid-row-summary {\n" " height: 24px;\n\n" " .x-grid-cell {\n" " vertical-align: middle;\n" " }\n\n" " &.weekend {\n" " .x-grid-cell-inner {\n" " color: #600;\n" " }\n" " }\n" " }\n\n" " .x-grid-row-editor {\n" " height: 29px !important;\n\n" " .x-panel-body {\n" " height: 29px !important;\n" " display: table-cell;\n" " vertical-align: middle;\n\n" " .x-form-text,\n" " .x-form-display-field {\n" " text-align: center;\n" " font-size: 13px;\n" " }\n" " }\n\n" " .x-grid-row-editor-buttons {\n" " top: 28px !important;\n" " }\n" " }\n\n" " #txt_suivi_commentaire .x-form-item-label {\n" " margin-bottom: 5px;\n" " }\n\n" " #lbl_suivi_erreur-inputEl {\n" " color: #C00;\n" " font-weight: bold;\n" " }\n" "}\n\n" "// annule le padding pour les groupes et remplace par un padding pour le texte des groupes\n" "#grid_social_contrats {\n" " .x-grid-group-hd {\n" " padding: 0px !important;\n\n" " .x-grid-group-title {\n" " padding: 2px 6px 4px !important;\n" " }\n" " }\n" "}\n\n" "#grid_social_dashboard {\n" " .x-grid-group-hd {\n" " padding-left: 8px !important;\n" " background-color: #2F323F !important;\n" " .degradeh(#2f323f, #2e65a7, #2f323f);\n\n" " .x-grid-group-title {\n" " height: 28px;\n" " line-height: 28px;\n" " }\n" " }\n" "}\n\n\n" "li img.suivi {\n" " float: right;\n" " margin-top: 2px;\n" "}\n\n" "table.x-field {\n" " input[type=text] {\n" " background-repeat: no-repeat;\n" " background-position: right center;\n" " background-origin: content-box;\n" " padding-right: 2px;\n" " }\n\n" " &.A {\n" " input[type=text] {\n" " background-image: url(\"../resources/images/etat_A.png\");\n" " }\n" " }\n" " &.F {\n" " input[type=text] {\n" " background-image: url(\"../resources/images/etat_F.png\");\n" " }\n" " }\n" " &.N {\n" " input[type=text] {\n" " background-image: url(\"../resources/images/etat_N.png\");\n" " }\n" " }\n" " &.P {\n" " input[type=text] {\n" " background-image: url(\"../resources/images/etat_P.png\");\n" " }\n" " }\n" " &.R {\n" " input[type=text] {\n" " background-image: url(\"../resources/images/etat_R.png\");\n" " }\n" " }\n" " &.V {\n" " input[type=text] {\n" " background-image: url(\"../resources/images/etat_V.png\");\n" " }\n" " }\n" " &.X {\n" " input[type=text] {\n" " background-image: url(\"../resources/images/etat_X.png\");\n" " }\n" " }\n" "}\n\n\n\n" "#menu_adherent {\n\n\n" " .x-grid-group-title {\n" " padding: 0px 10px;\n" " }\n\n\n\n" " //mot de passe\n" " #grid_adh_connexionsinternet {\n" " .x-grid-cell-headerId-col_adh_CIN_PASSE,\n" " .x-grid-cell-headerId-col_adh_CIN_ID {\n" " .x-grid-cell-inner {\n" " font-family: \"Courier New\", Courier, monospace !important;\n" " text-align: center !important;\n" " }\n" " }\n\n" " .x-grid-cell-inner {\n" " line-height: 18px;\n" " white-space: normal;\n" " }\n" " }\n\n\n\n\n" " #grid_techniciens .x-grid-cell-inner {\n" " padding: 2px !important;\n" " }\n\n" " /*\n" " #img_adh_facturation_etat {\n" " margin: 5px 5px 5px 20px;\n" " }\n" " */\n\n" " /*\n" " #fieldset_adh_facturation td {\n" " vertical-align: middle;\n" " }\n" " */\n\n" " #grid_adh_exercices {\n" " .x-grid-cell {\n" " vertical-align: middle;\n\n" " .x-grid-cell-inner {\n" " height: 24px;\n" " line-height: 24px;\n" " padding: 2px !important;\n\n" " .jauge {\n" " /*margin-top: 1px;*/\n\n\n" " .green_progress_bar .x-progress-bar {\n" " .degradev (#9AC795, #79BF71 50%, #69BA5F 51%, #58B54E);\n" " background-color: #68BA5F;\n" " border-right-color: #5BA852;\n" " border-top-color: #AAC7A7;\n" " }\n\n\n" " }\n" " }\n" " }\n" " }\n\n" " /*\n" " #form_adh_etatcivil {\n" " #txt_adh_etatcivil_designation {\n" " .x-form-display-field {\n" " font-weight: bold;\n" " font-size: 18px;\n" " padding: 0px;\n" " }\n" " }\n" " }\n" " */\n\n" " #grid_adh_techniciens, #form_adh_etatcivil, #grid_adh_associes, #grid_adh_interventions {\n" " .champ_email, .rien {\n" " text-decoration: none;\n\n" " /*float: right;*/\n" " img {\n" " display: inline-block;\n" " }\n" " }\n\n" " .champ_email_text .x-form-display-field {\n" " /*padding: 0px;*/\n" " margin: 0px;\n\n" " img {\n" " margin-left: 10px;\n" " position: relative;\n" " bottom: -3px;\n" " }\n" " }\n" " }\n\n" " #grid_adh_interventions {\n" " .x-grid-cell-inner {\n" " white-space: normal !important;\n" " }\n" " }\n" "}\n\n" ".aucuneactivite .x-grid-rowbody {\n" " color: #AAA;\n" " padding: 0.75em;\n" " text-align: center;\n" "}\n" ".activite.aucuneactivite, .reunion.aucuneactivite {\n" " color: #AAA;\n" " text-align: center;\n" " font: normal normal 400 11px/13px Tahoma;\n" "}\n\n\n\n" ".x-grid-group-title {\n" " .headertec, .headerreunion {\n" " padding: 0px 5px;\n" " height: 26px;\n\n" " &.ferme, &.ouvert {\n" " background-position: 4px 50%;\n" " background-repeat: no-repeat;\n" " }\n\n" " background-image: none;\n\n" " &.ferme {\n" " background-image: url(\"../resources/images/expand_16x16.png\");\n" " }\n\n" " &.ouvert {\n" " background-image: url(\"../resources/images/collapse_16x16.png\");\n" " }\n" " }\n" "}\n\n\n" "#grandlivre_grid {\n" "// .x-grid-row .x-grid-cell-inner {\n" " .x-grid-data-row .x-grid-cell-inner {\n" " font-size: 13px;\n" " padding: 5px !important;\n" " }\n\n" " .x-grid-group-title {\n" " font-size: 13px;\n" " padding: 15px 0px 3px 20px !important;\n" " line-height: normal;\n" " height: auto;\n" " border-top: 2px solid #99BBE8;\n" " background-color: #E5FFCC !important;\n" " color: #3764A0;\n" " background-image: none;\n" " }\n\n" " .cgo_signe {\n" " float: left;\n" " margin-left: 5px;\n" " }\n\n" " .cgo_debit {\n" " .cgo_currency {\n" " margin-right: 30px;\n" " color: #600;\n" " }\n" " }\n\n" " .cgo_credit {\n" " .cgo_currency {\n" " margin-right: 5px;\n" " color: #040;\n" " }\n" " }\n\n" " .x-grid-row.gras .x-grid-cell-inner,\n" " .x-grid-data-row.gras .x-grid-cell-inner {\n" " font-size: 13px;\n" " font-weight: 700 !important;\n" " }\n" "}\n\n" "#menu_planning, #menu_reservationsSemaine {\n" " .x-grid-group-hd:hover {\n" " cursor: pointer;\n" " }\n" "}\n\n" "#menupanel .x-grid-cell-inner {\n" " font-size: 13px;\n" " line-height: 13px;\n\n" " .x-tree-node-text {\n" " font-size: 13px;\n" " line-height: 14px;\n" " }\n" "}\n\n" ".modifiable:hover {\n" " background-image: url( \"../resources/images/pencil_16x16.png\" );\n" " background-repeat: no-repeat;\n" " background-position: 1% center;\n" " padding-left: 24px;\n" "}\n\n" ".marge_droite_5px {\n" " margin-right: 5px;\n" "}\n\n" "#lbl_suivi_recap, #lbl_suivi_commande {\n\n" " h3 {\n" " margin: 0px;\n" " vertical-align: middle;\n" " line-height: 25px;\n\n" " &.big {\n" " line-height: 50px;\n" " }\n" " }\n\n" " span.salarie, span.mois, span.refcom, span.statutcom {\n" " color: #900;\n" " }\n" "}\n\n" "/* popup qui apparait dans le planning lors du survol d'un technicien */\n" "div.pop-up {\n" " display: none;\n" " position: fixed;\n" " padding: 0px 10px 10px 10px;\n" " background: #eeeeee;\n" " opacity: 1.0;\n" " color: #000000;\n" " border: 1px solid #1a1a1a;\n" " z-index: 1000;\n\n" " .entete, .contenant {\n" " margin: 0px;\n" " }\n\n" " .entete {\n" " .fonctions {\n" " margin: 0px;\n" " padding: 0px;\n" " font-size: 11px;\n" " list-style-type: none;\n" " text-align: center\n" " }\n" " }\n\n" " .contenu {\n\n" " /*background-color: salmon;*/\n\n" " .photo {\n" " display: block; /* pour enlever l'espace en dessous de l'image */\n" " }\n" " }\n" "}\n\n" ".x-selectable, .x-selectable * {\n" " -moz-user-select: text!important;\n" " -khtml-user-select: text!important;\n" "}\n\n\n\n" "#grid_congesStats {\n" " .premiereannee {\n" " &.important {\n" " font-weight: bold;\n" " }\n" " }\n\n" " .anneessuivantes {\n" " /*display: none;*/\n" " .subitem {\n" " &.n-0 {\n" " background-color: rgba(255, 255, 255, 0.3);\n" " }\n\n" " &.n-1 {\n" " background-color: rgba(255, 255, 255, 0.4);\n" " }\n\n" " &.n-2 {\n" " background-color: rgba(255, 255, 255, 0.5);\n" " }\n\n" " &.n-3 {\n" " background-color: rgba(255, 255, 255, 0.6);\n" " }\n\n" " &.n-4 {\n" " background-color: rgba(255, 255, 255, 0.7);\n" " }\n\n" " &.n-5 {\n" " background-color: rgba(255, 255, 255, 0.8);\n" " }\n\n" " &.n-6 {\n" " background-color: rgba(255, 255, 255, 0.9);\n" " }\n" " }\n\n" " }\n\n" " .depart {\n" " background-color: rgba(255, 0, 0, 0.2);\n" " }\n\n" " .intermediaire {\n" " background-color: rgba(255, 255, 0, 0.2);\n" " }\n\n" " .arrivee {\n" " background-color: rgba(0, 255, 0, 0.2);\n" " }\n\n" " .x-docked-summary {\n" " .x-grid-cell-inner {\n" " height: 32px;\n" " line-height: 32px;\n" " }\n" " }\n" "}\n\n\n\n" ".listright {\n" " float: right;\n" " font-family: \"Courier New\", \"Courier\", monospace;\n" " font-weight: 700;\n" " color: #888;\n" "}\n\n" "img.listright {\n" " margin-left: 10px;\n" "}\n\n\n" ".listeadhitem {\n" " display: inline-block;\n" " width: 320px;\n" "}\n\n\n\n\n" "/* compatibilité avec Selectize */\n" "#grid_techniciens {\n" " .x-docked {\n" " z-index: auto;\n" " }\n" "}\n" "#toolbar_techniciens {\n" " &.x-docked {\n" " z-index: auto;\n" " }\n\n" " &.x-box-layout-ct {\n" " overflow: visible;\n" " }\n\n" " #toolbar_techniciens-innerCt {\n" " &.x-box-inner {\n" " overflow: visible;\n" " }\n" " }\n" "}\n" ".selectize-control.cgo-native-text-input .selectize-dropdown {\n" " .nomprenom, .email {\n" " font-size: 12px;\n" " opacity: 0.5;\n" " float: right;\n" " }\n\n" " .nomprenom {\n" " width: 150px;\n" " }\n\n" " .email {\n" " width: 160px;\n" " }\n" "}\n\n\n" ".negatif {\n" " color: #F00;\n" " font-weight: bold;\n" "}\n\n" "pre.insee {\n" " margin: 0px 0px 0px 10px;\n" " font-size: 0.85em;\n" " color: #666;\n" " .degradeh( rgba(255,255,255,0) 0%, #E6E6E6 50%, rgba(255,255,255,0) 100% );\n" "}\n\n" "pre.identifiant {\n" " margin: 0px;\n" "}\n\n" "span.invalide {\n" " color: red;\n" "}\n\n" "img.centrelignenormale {\n" " position: relative;\n" " top: 2px;\n" "}\n") matches = re.finditer(regex, test_str) for matchNum, match in enumerate(matches, start=1): print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group())) for groupNum in range(0, len(match.groups())): groupNum = groupNum + 1 print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum))) # Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html