Regular Expressions 101

Save & Manage Regex

  • Current Version: 2
  • Save & Share
  • Community Library

Flavor

  • PCRE2 (PHP)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java
  • .NET 7.0 (C#)
  • Rust
  • PCRE (Legacy)
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests
Sponsors
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
Processing...

Test String

Code Generator

Generated Code

import re regex = re.compile(r"([\d]+/[\d\w]+)?\s?([\w]+/[\w\d]+)\s((?:[\w]{1}[\d]{4}\s[\w]{1}[\d]{5}\s\-\s)+[\w]{1}[\d]{4}\s[\w]{1}[\d]{5})", flags=re.MULTILINE) test_str = ("FVAK21PAWU_1801072135 Page 1\n" "FVAK21 PAWU 080632\n" "VAAAK1\n" "VA ADVISORY\n" "DTG: 20180108/0630Z\n" "VAAC: ANCHORAGE\n" "VOLCANO: KLYUCHEVSKOY 300260\n" "PSN: N5603 E16038\n" "AREA: KAMCHATKA PENINSULA\n" "SUMMIT ELEV: 15863 FT (4835 M)\n" "ADVISORY NR: 2018/044\n" "RMK: PLEASE SEE FVFE01 RJTD ISSUED BY TOKYO VAAC WHICH DESCRIBES\n" "CONDITIONS NEAR THE ANCHORAGE VAAC AREA OF RESPONSIBILITY\n" "BH JAN 2018 AAWU\n" "VA ADVISORY\n" "DTG: 20100101/1500Z\n" "VAAC: LONDON\n" "VOLCANO: ORAEFAJOKULL 374010\n" "PSN: N6400 W01639\n" "AREA: ICELAND\n" "SUMMIT ELEV: 2119M\n" "ADVISORY NR: 2010/002\n" "INFO SOURCE: IMO\n" "AVIATION COLOUR CODE: RED\n" "ERUPTION DETAILS: OBS ASH PLUME, EST 12KM FROM RADAR.\n" "OBS VA DTG: 10/1500Z\n" "OBS VA CLD: 10/2100Z SFC/FL200 N6329 W01651 - N6517\n" "W01614 - N6849 E00351 - N6742 E01549 - N6329 W01651\n" "FCST VA CLD +6HR: 10/2100Z SFC/FL200 N6329 W01651 - N6517\n" "W01614 - N6849 E00351 - N6742 E01549 - N6329 W01651\n" "FL200/350 N6327 W01656 - N6600 W01444 - N6750 W00307 - N6854 E01550 -\n" "N6718 E01833 - N6327 W01656\n" "FL350/550 N6325 W01635 - N6450 W01625 - N6812 W00004 - N6841 E01441 -\n" "N6726 E01653 - N6325 W01635\n" "FCST VA CLD +12HR: 11/0300Z SFC/FL200 N6334 W01640 - N6526 W01629 -\n" "N6945 E00502 - N6658 E03036 - N6327 E03908 - N6629 E00931 - N6334\n" "W01640\n" "FL200/350 N6329 W01701 - N6556 W01624 - N7009 E00806 - N6431 E04310 -\n" "N6026 E04358 - N6709 E00854 - N6329 W01701\n" "FL350/550 N6334 W01650 - N6551 W01547 - N6931 E01235 - N6439 E03929 -\n" "N6128 E04027 - N6634 E01013 - N6334 W01650\n" "FCST VA CLD +18HR: 11/0900Z SFC/FL200 N6327 W01717 - N6517 W01706 -\n" "N6905 E00017 - N6949 E02107 - N6024 E05301 - N5804 E05147 - N6630\n" "E01612 - N6327 W01717 FL200/350 N6327 W01645 - N6556 W01613 - N7054\n" "E01405 - N5925 E05658 - N5421 E04829 - N6717 E01018 - N6327 W01645\n" "FL350/550 N6327 W01634 - N6634 W01510 - N7012 E01458 - N5953 E05349 -\n" "N5558 E04930 - N6630 E01405 - N6327 W01634\n" "RMK: ASH PLUME NOW OBS, ESTIMATED HEIGHT 12KM FROM RADAR. INCREASING\n" "SEISMIC ACTIVITY.\n" "NXT ADVISORY: WILL BE ISSUED BY 20150210/1800Z =\n" "DTG: 20211228/0015Z\n" "VAAC: BUENOS AIRES\n" "VOLCANO: SABANCAYA 354006\n" "PSN: S1547 W07150\n" "AREA: PERU\n" "SUMMIT ELEV: 19576 FT (5967 M)\n" "ADVISORY NR: 2021/1507\n" "INFO SOURCE: GOES-E. GFS. WEBCAM. VOLCAT. \n" "AVIATION COLOUR CODE: NOT GIVEN\n" "ERUPTION DETAILS: CONTINUOUS EMISSION\n" "OBS VA DTG: 27/2340Z\n" "OBS VA CLD: SFC/FL240 S1532 W07159 - S1540 W07149\n" "- S1547 W07150 - S1550 W07202 - S1540 W07208 -\n" "S1532 W07159 MOV NW 10KT \n" "FCST VA CLD +6 HR: 28/0530Z SFC/FL240 S1537 W07159\n" "- S1544 W07151 - S1547 W07150 - S1552 W07202 -\n" "S1543 W07208 - S1537 W07159 \n" "FCST VA CLD +12 HR: 28/1130Z SFC/FL240 S1531\n" "W07202 - S1540 W07152 - S1547 W07150 - S1554\n" "W07202 - S1543 W07213 - S1531 W07202 \n" "FCST VA CLD +18 HR: 28/1730Z SFC/FL240 S1532\n" "W07211 - S1538 W07155 - S1547 W07151 - S1552\n" "W07203 - S1546 W07218 - S1532 W07211 \n" "RMK: VA IS HARDLY DETECTED IN STLT IMAGERY DUE A\n" "WEAK EMISSION AND SOME WX CLD IN THE AREA.\n" "WEBCAMS SHOWS CONT EMS OF STEAM AND VA ...SMN\n" "NXT ADVISORY: WILL BE ISSUED BY 20211228/0615Z=") matches = regex.finditer(test_str) for match_num, match in enumerate(matches, start=1): print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}") for group_num, group in enumerate(match.groups(), start=1): print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")

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