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
No Match

r"
"
gm

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"(?<!\d)(\d)(?!\d)" test_str = ("1. 1-1 Prise en main de blender\n" "2. 2-1 Présentation de la sculpture\n" "3. 2-2 Sculpter le visage\n" "4. 2-3 Retopologie : Créer la structure du visage\n" "5. 2-4 Retopologie : Placer les vertices de face\n" "6. 2-5 Retopologie : Placer les vertices de profil\n" "7. 2-6 Finalisation de la tête\n" "8. 2-7 Modéliser et placer les yeux\n" "9. 2-8 Modéliser les cheveux\n" "10. 2-9 Modéliser les cils et sourcils\n" "11. 2-10 Modéliser l'intérieur de la bouche\n" "12. 3-1 Préparer la modélisation du corps\n" "13. 3-2 Modéliser le corps\n" "14. 3-3 Modéliser les pieds\n" "15. 3-4 Modéliser les mains\n" "16. 3-5 Modéliser les doigts partie 1\n" "17. 3-6 Modéliser les doigts partie 2\n" "18. 3-7 Ajuster et préciser les bras\n" "19. 3-8 Ajuster le corps pour préparer le raccord à la tête\n" "20. 3-9 Raccorder le corps à la tête\n" "21. 3-10 Ajuster la tête à l'aide du \"Modifier\" lattice\n" "22. 4-1 Créer le pantalon\n" "23. 4-2 Créer le T-shirt\n" "24. 4-3 Créer les bottes\n" "25. 4-4 Donner de l'épaisseur aux habits\n" "26. 5-1 Texturer le pantalon\n" "27. 5-2 Texturer le T-shirt\n" "28. 5-3 Texturer les bottes\n" "29. 5-4 Texturer les cheveux\n" "30. 5-5 Faire un dégradé sur les cheveux\n" "31. 5-6 Texturer les cils/sourcils\n" "32. 5-7 Texturer les yeux\n" "33. 5-8 Préparer le personnage au texturing\n" "34. 5-9 Dépliage UV du personnage\n" "35. 5-10 Préparer les images pour le texture paint\n" "36. 5-11 Peindre le corps\n" "37. 5-12 Peindre le visage\n" "38. 5-13 Peindre les mains\n" "39. 5-14 Peindre l'intérieur de la bouche et les lèvres\n" "40. 5-15 Reliefs et spécularité du visage\n" "41. 6-1 Parties délavées du pantalon\n" "42. 6-2 Ajouter un Fresnel aux textures\n" "43. 7-1 Créer l'armature\n" "44. 7-2 Appliquer la symétrie du squelette\n" "45. 7-3 Créer un contrôleur \"Master\"\n" "46. 7-4 Créer une IK pour les jambes\n" "47. 7-5 Créer une IK pour les bras\n" "48. 7-6 Créer un contrôleur pour le regard\n" "49. 7-7 Créer un contrôleur pour plier les doigts\n" "50. 7-8 Appliquer les contrôleurs en symétrie\n" "51. 7-9 Connecter l'armature au personnage\n" "52. 7-10 Customiser les contrôleurs genoux et coudes\n" "53. 7-11 Customiser le contrôleur \"Master\"\n" "54. 7-12 Customiser les contrôleurs IK\n" "55. 7-13 Customiser les contrôleurs de la colonne vertébrale\n" "56. 7-14 Customiser les contrôleurs épaules, cou, tête\n" "57. 7-15 Appliquer des couleurs aux groupes de \"bones\"\n" "58. 7-16 Customiser les contrôleurs des doigts\n" "59. 7-17 Faire suivre le regard\n" "60. 7-18 Automatiser la fermeture des doigts\n" "61. 7-19 Créer des drivers pour plier les doigts\n" "62. 7-20 Corrections de la fermeture du poing\n" "63. 7-21 Réduire la résolution du pantalon en conservant les détails dans la texture\n" "64. 7-22 Réduire la résolution du T-shirt en conservant les détails dans la texture\n" "65. 7-23 Préparer le personnage pour éviter les éventuels défauts liés aux habits\n" "66. 8-1 Créer les expressions faciales\n" "67. 8-2 Fermer les yeux\n" "68. 8-3 Créer un driver pour la fermeture des yeux\n" "69. 8-4 Finaliser l'expression de \"colère\" et lui créer un driver\n" "70. 8-5 Faire briller les yeux\n" "71. 9-1 Connecter les habits à l'armature et peindre les influences des os\n" "72. 9-2 Créer le \"Kameha\"\n" "73. 9-3 Placer la première pose du personnage\n" "74. 9-4 Créer le mouvement de caméra du premier plan de notre animation\n" "75. 9-5 Affiner les réglages et faire sourire le personnage\n" "76. 9-6 Animer le mouvement du personnage\n" "77. 9-7 Correction bug possible de texture des yeux\n" "78. 9-8 Animer le \"Kameha\"\n" "79. 9-9 Placer et animer la 2ème caméra\n" "80. 9-10 Créer l'effet tremblement de la caméra\n" "81. 9-11 Créer le mouvement des cheveux\n" "82. 10-1 Créer le fond et les lumières\n" "83. 10-2 Texturer le fond et régler la profondeur de champs des caméras\n" "84. 10-3 Réglages de rendu\n" "85. 10-4 Point sur l'export et explications lumières volumétriques\n" "79. 9-9 Placer et animer[xnmjklxx]la 2ème caméra\n" "80. 9-10 Créer l'effet tremblement de la caméra\n" "81. 9-11 Créer le mouvement des cheveux\n" "82. 10-1 Créer le[xwerrxxxxx]fond et les lumières\n" "83. 10-2[xx]Texturer le fond et régler la profondeur de champs des caméras\n" "84. 10-3 Réglages de rendu\n" "85. 10-4 Point[xxxxtzzxxx]sur l'export et explications ") matches = re.finditer(regex, test_str, re.MULTILINE) 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