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

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "((?:(?# path without \"\" )(?<opening>(?# 'C:/', '//', '//./<UNC/C:>', '//?/<UNC/C:>' or '%VariableWindows%')(?<UNCPrefix>[\\/\\\\][\\/\\\\][?.][\\/\\\\](?:UNC[\\/\\\\])?)?(?<montage>\\b[a-zA-Z]:[\\/\\\\])|(?:(?:(?&UNCPrefix))|(?:[\\/\\\\][\\/\\\\](?!(?&montage))))|(?:%\\w+%[\\/\\\\]?))(?:(?# directory btw // )[^\\/\\\\<>:\"|?\\n\\r ][^\\/\\\\<>:\"|?\\n\\r]*(?<![ ])[\\/\\\\])*(?:(?#we search for fileName only if next character is pathFriendly)(?=[^\\/\\\\<>:\"'|?\\n\\r;, ])(?:(?#name file ? dir ?)(?:[^\\/\\\\<>:\"|?\\n\\r;, .](?: (?=\\w))?(?:\\*(?!= ))?(?!(?&montage)))+)?(?:(?#extention)\\.\\w+)*))|(?:(?# path quoted \"\" or '' )[\"'](?&opening)(?=.*?[\"'])(?:[^\\/\\\\<>:'\"|?\\n\\r]+[\\/\\\\]?)+?[\"']))"; final String string = "\\\\LOCALHOST\\c$\\temp\\test-file.txt\"\n" + "@\"c:\\temp\\test-file.txt\",\n" + "@\"\\\\127.0.0.1\\c$\\temp\\test-file.txt\",\n" + "@\"\\\\LOCALHOST\\c$\\ temp\\test-file.txt\",\n" + "@\"\\\\.\\c:\\temp\\test-file.txt\",\n" + "@\"\\\\?\\c:\\temp\\est-file.txt\",\n" + "@\"\\\\.\\UNC\\LOCALHOST\\c$\\temp\\test-file.txt\",\n" + "@\"\\\\127.0.0.1\\c$\\temp\\test-file.txt\"\n\n" + "file:///C:/Users/Downloads/20220516_32289275_1049383.pdf\n" + "file://p-eco2.rd.fr/vol_H0037_01$/599/livraison/20220516_32289275_1049383.pdf\n" + " --> couper les path apres le '\\ ', meme que on est arrivé au fichier\n" + "c:\\temp\\test-file.txt\",\n" + "\\\\127.0.0.1\\c$\\temp\\test-file.txt\",\n" + "\\\\LOCALHOST\\c$\\ temp\\test-file.txt\",\n" + "\\\\LOCALHOST\\c$ \\temp\\test-file.txt\",\n" + "\\\\.\\c:\\temp\\t\\est-file.txt\",\n" + "\\\\?\\c:\\temp\\test-file.txt\",\n" + "\\\\.\\UNC\\LOCALHOST\\c$\\temp\\test-file.txt\",\n" + "\\\\?\\UNC\\ServerName\\ temp\\test-file.txt\",\n" + "\\\\127.0.0.1\\c$\\temp\\test-file.txt\"\n" + "\\\\?\\server1\\e:\\utilities\\\\filecomparer\\\n\n" + "C:/test\\gvk.hv/fgfjgjj bdsdfus(fg)\n" + "C:/test\\gvkhv/../fgfjgjjb/yfigfi\n" + "C:/test\\gvk.hv/fgfj.gjjb/uhloext C:/test\\gvk.hv/fgfj.gjjb/uhloext.ds\n" + "C:/test\\gvk.hv/fgfj.gjjb/uhloext C:/UNC/test\\gvk.hv/fgfj.gjjb/uhloext.ds\n" + "Site0 / 3: - Warning . See log file 'C:\\ProgramData\\InfoVista\\Planet 7.4\\7.4\\RPE\\Log\\Plugins\\Universal_Model_masked\\log_Universal_Model.txt' for details\n" + "C:/test\\gvk.hv/fgfj.gjjb/uhloext.ds.yi : gf\n" + "\\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Polygon\\Haguenau\\Building\\Haguenau hgtfhyt \"C:/te-st.html\" \"C:/te-st.html\" gd\"dhbcsk \"C:/te/dsst.ikpo fdsf \"C:\\test\" \"C:// test.html\" gd\n" + "\"//te s t/e, llo.html \n" + "C:/test\\f/uhlo/. \n" + "C://te?st.html\n" + "b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Custom Data\"\n" + "; dfsdf \"\\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Custom Data\"\n" + "; dfsdf \"\\\\\n" + "Haguenau_Building.tab : Data format of \\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Polygon\\Haguenau\\Building\\Haguenau Building.* C: is invalid\n" + "Haguenau_Building.tab : Data format of \\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo NetAct Atoll_Planet\\UR_Est\\Polygon\\Haguenau\\Building\\Haguenau Building.TAB, is invalid\n" + "Haguenau_Building.tab : Data format of \\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Polygon\\Haguenau\\Building\\Haguenau Buildi* ng.*, is invalid\n" + "C:/test/../hjgbkl C:/test/../hjgbkl.gfgdfgrdgfdgr C:/test/../hjgbkl\n" + "C:/test.html\n" + "C://test/ .h/hel,lo.html//test/./hello.html\n" + "C:/test//hello.html\n" + "//test\n" + "//hello.html\n" + "/test\n" + "\"%tmp%/fsdfs\"\n" + "%tmp%/fsdfs\n" + "ERROR 8/31/2021 - 6:45:39 PM HighResClutter .RasterFile : \\\\b-ren ice\\sauv egardes\\B-HIER\\GEO%dsq%\\NewJersey_NewYork\\DTM\\DTM\\CENTRAL_JERSE..Y_New_York_2 m_Z18N_0_DTM_02_06.bil : Le fichier spécifié est introuvable. \n" + "\\\\b-ren ice\\sauv egardes\\..\\B-HIER\\GEO\\NewJersey_NewYork\\DTM\\DTM\\CENTRAL_JERSE..Y_New_York_2 m_Z18N_0_DTM_02_06.bil C:\\b-ren ice\\sauv egardes\\B-HIER\\GEO\\NewJersey_NewYork\\DTM\\DTM\\CENTRAL_JERSE..Y_New_York_2 m_Z18N_0_DTM_02_06.bil \\\\b-ren ice\\sauv egardes\\B-HIER\\GEO\\NewJersey_NewYork\\DTM\\DTM\\CENTRAL_JER SE.Y_New_York_2 m_Z18N_0_DTM_02_06.bil. \n" + "//test.html\n" + "\\\\10.1.1.107\n" + "//10.1.1.107/test.html\n" + "//10.1.1.107/te st/hello.html\n" + "//10.1.1.107/test/hello\n" + "//test/hello.txt\n" + "//test/hello.txt.\n" + "/test/html\n" + "/tes?t/html\n" + "/test.html\n" + "test.html\n" + "//\n" + "/\n" + "\\\\\\rged\\bfg\n" + "\\\\\n" + "/t!esrtr\n" + "C:/hel**o\n\n" + "\\\\.\\UNC\\Server\\Share\\Test\\Foo.txt \n" + "\\\\?\\UNC\\Server\\Share\\Test\\Foo.txt\n\n" + "Pour les chemins UNC de périphérique, la partie serveur/partage forme le volume. Par exemple, dans \\\\?\\server1\\e:\\utilities\\\\filecomparer\\ , la partie serveur/partage est server1\\utilities . Ceci est important quand\n"; final Pattern pattern = Pattern.compile(regex); final Matcher matcher = pattern.matcher(string); while (matcher.find()) { System.out.println("Full match: " + matcher.group(0)); for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } } } }

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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html