Regular Expressions 101

Save & Manage Regex

  • Current Version: 1
  • 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"Call-ID: (?P<method>[A-Za-z0-9_]+)-") test_str = ("-------------------------- LTETAS99A --------------------------\n" "SUNGSU 2019-10-14 13:33:45.554 MON ON LTETASOMP99\n" " MSIPX3 RECV REQUEST FROM 172.28.109.98:5067\n" " Src Addr : <211.188.227.6:8102> Dest Addr : <211.188.227.6:5083>\n" " From : <01052938592>\n" " To : <01020259013>\n" " Size : 2206 Bytes (sip:1740, body:466)\n\n" " SIP MSG ::=\n" " {\n" " INVITE tel:01020259013;phone-context=sktims.net SIP/2.0\n" " INVITE sip:01089186220@sktims.net SIP/2.0\n" " BYE sip:CSM1MSIPX1@172.28.109.115:5073;tu=3 SIP/2.0\n\n" " REGISTER sip:rvtas22.sktims.net;lr SIP/2.0\n" " REGISTER sip:scscf24.sktims.net;lr SIP/2.0\n" " INVITE tel:01054736915;phone-context=sktims.net SIP/2.0\n" " INVITE sip:ivr@icrbt08.sktims.net SIP/2.0\n" " INVITE tel:01054736915;phone-context=sktims.net SIP/2.0\n" " INVITE sip:01054736915@sktims.net SIP/2.0\n" " INVITE sip:01054736915@sktims.net SIP/2.0\n" " ACK sip:pointi_service@192.168.152.88:5060 SIP/2.0\n" " PRACK sip:CSM1MSIPX2@223.38.5.33:5072;tu=2;orig SIP/2.0\n" " PRACK sip:CSM1MSIPX1@223.38.5.32:5073;tu=2 SIP/2.0\n" " PRACK sip:CSM1MSIPX1@223.38.5.32:5073;tu=2 SIP/2.0\n" " INFO sip:pointi_service@192.168.152.88:5060 SIP/2.0\n" " INFO sip:MSIPX@223.38.5.32:5075;tu=2;mrf SIP/2.0\n" " BYE sip:pointi_service@192.168.152.88:5060 SIP/2.0\n" " ACK sip:CSM1MSIPX2@223.38.5.33:5072;tu=2;orig SIP/2.0\n" " ACK sip:CSM1MSIPX1@223.38.5.32:5073;tu=2 SIP/2.0\n" " ACK sip:CSM1MSIPX1@223.38.5.32:5073;tu=2 SIP/2.0\n" " ACK sip:01054736915@172.28.109.82:5180 SIP/2.0\n\n" " Record-Route: <sip:SCSM3-ut00so-tu11@172.28.109.98:5067;lr>\n" " Route: <sip:orig@otas99.sktims.net;lr>\n" " Route: <sip:SCSM3-orig-tu111571027625-45014022@172.28.109.98:5067;lr>\n" " Via: SIP/2.0/UDP 172.28.109.98:5067;branch=z9hG4bK%11%%SCSM3-tu11-cmo-rru'SCSM3-ut00so-tu11'%7fdfdbcfb8e0437a1359_7c935;received=211.188.227.6;rport=8102\n" " Via: SIP/2.0/UDP 172.28.109.89:5180;branch=z9hG4bK7fd208892a703e0cad3e_6fba8\n" " P-Asserted-Identity: sip:01052938592@sktims.net\n" " Max-Forwards: 68\n" " To: <tel:01020259013;phone-context=sktims.net>\n" " From: <sip:01052938592@sktims.net>;tag=36df023a\n" " From: <tel:01085222359;phone-context=sktims.net>;tag=2a4f25f7e38c1\n" " From: <sip:114@sktims.net>;tag=337259\n" " From: \"SKi…”e??i½¤e³?e°?i?¼i?°\"<sip:114@sktims.net>;tag=62a4a407689e7\n\n" " Call-ID: H_ABC242A-nDcgZ_h6tWoSp7HAheBprQ..@2001:2d8:234:aa35::56a1:70a5\n" " Call-ID: SCSM1-H_ABC231A-44fkaDYDRUtGXwlkoMaWzg..@2001:2d8:e90f:ab33::24fe:e0a4\n" " Call-ID: H_ABC231A-44fkaDYDRUtGXwlkoMaWzg..@2001:2d8:e90f:ab33::24fe:e0a4\n" " Call-ID: SCSM1-H_ABC231A-44fkaDYDRUtGXwlkoMaWzg..@2001:2d8:e90f:ab33::24fe:e0a4\n" " Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: TT22C112_OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: TT22C112_OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: TT22C112_OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32\n" " Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32\n" " Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32\n" " Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32\n" " Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32\n" " Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32\n" " Call-ID: TT22C112_OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n" " Call-ID: TT22C112_OT23C122_ob2bua-V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855\n\n" " CSeq: 1 INVITE\n" " Session-Expires: 1800;refresher=uac\n" " Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, UPDATE, INFO, REFER, NOTIFY, MESSAGE, PRACK\n" " Content-Type: application/sdp\n" " Supported: timer, 100rel, sec-agree\n" " User-Agent: TTA-VoLTE/3.0 SM-G977N/SH6_SH6 Device_Type/Android_Phone SKT\n" " Accept-Contact: *;+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel\";require;explicit\n" " P-Early-Media: supported\n" " P-TTA-VoLTE-Info: avchange\n" " P-Access-Network-Info: 3GPP-E-UTRAN-FDD;utran-cell-id-3gpp=45005080a074af8b\n" " Content-Length: 466\n" " Contact: <sip:01052938592-517b78dfb70cccf4@172.28.109.89:5180;ep=[2001:2d8:234:aa35::56a1:70a5]:6200;fw=[2001:2d8:234:aa35::56a1:70a5]:6200;ipsec>;+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel\";video\n" " P-Served-User: <sip:01052938592@sktims.net>;sescase=orig;regstate=reg\n" " P-Charging-Vector: icid-value=\"abc24.sktims.net-s-6d9061000e2d4be3\"\n" " P-Asserted-Service: urn:urn-7:3gpp-service.ims.icsi.mmtel\n" " P-Charging-Function-Addresses: ccf=\"aaa://imscg4.sktims.net\"; ccf=\"aaa://imscg3.sktims.net\"\n" " \n" " v=0\n" " o=abc 1571027623778107 0 IN IP4 172.28.107.172\n" " s=-\n" " c=IN IP4 172.28.107.172\n" " t=0 0\n" " m=audio 46284 RTP/AVP 110 100 98 103 101\n" " b=AS:42\n" " b=RS:0\n" " b=RR:800\n" " a=rtpmap:110 EVS/16000\n" " a=fmtp:110 br=9.6-24.4;bw=nb-swb\n" " a=rtpmap:100 AMR-WB/16000/1\n" " a=fmtp:100 octet-align=1\n" " a=rtpmap:98 AMR/8000/1\n" " a=fmtp:98 octet-align=1\n" " a=rtpmap:103 telephone-event/16000\n" " a=fmtp:103 0-15\n" " a=rtpmap:101 telephone-event/8000\n" " a=fmtp:101 0-15\n" " a=sendrecv\n" " a=ptime:20\n" " a=maxptime:120\n" " \n" " }\n" "COMPLETED") 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