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

/
/
m

Test String

Code Generator

Generated Code

import Foundation let pattern = #"(^[0-9]{8})(?: )([0-9]{2}\/[0-9]{2}\/[0-9]{4})"# let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines) let testString = #""" //INIZIO// 19300011 08/01/2019 COMPARIN SYSTEM S.R.L. VIA F.TASCA 145 35010 SAN PIETRO IN GU PD Italia COMPARIN SYSTEM S.R.L. VIA F.TASCA 145 35010 SAN PIETRO IN GU PD Italia ASSEGNATO N.Ord. Peso 1 A.2018/003 NR 800 CAVALL.CENTR.SINGOLO RIPIEGATO / 2 A.4006/D51 NR 800 ASSIEME CONTATTO DX INVERTITOR / 2655,200 3 A.4006/S51 NR 800 ASSIEME CONTATTO SX INVERTITOR / 3112,000 4 A.4039/D52 NR 3000 ASSIEME CONTATTO TERRA BIVALEN / 12393,000 5 A.4039/S52 NR 5000 ASSIEME CONTATTO FASE BIVALENT / 20710,000 6 A.4050/052 NR 2000 ASS. CONT. TERRA PRESA UNIVERS / 12366,000 7 A.4050/053 NR 5000 ASS. CONT. FASE PRESA UNIVERSA / 24815,000 8 BIADESIVO MT 50 BIADESIVO SOTTILE SUPP. SP 0,1 / 9 ETI.100X56G NR 292 ETICHETTE 100X56 GIALLE X CONF / 10 ETI.30X15B NR 38512 ETICHETTE IN ROTOLO 15X30 BIAN / 11 ETI.32X80EL NR 233 ETICH IN ROTOLO 32X80 GIALLE / 12 GR.002 NR 2200 CONTATTO PER CAVALLOTTO / 2257,200 13 GR.003 NR 2200 CAVALLOTTO CENTRALE SINGOLO / 3484,800 14 GR.023 NR 10000 MORS.STRINGIF.PULS.7,8X7,8 ZB / 7570,000 15 GR.024 NR 3500 CORNICE ESTERNA / 13170,500 16 IMBALLO.01 NR 2 CARTONE LxLxH 533X330X285 / 17 IMBALLO.17N NR 25 CARTONE LxLxH INT 383X189X123 / 18 IMBALLO.22N NR 30 CARTONE LxLxH 35X27X18,5 / 10208,100 19 LAMP.NEON NR 1000 LAMP.NEON NE6X13 HB+100K 24/58 / 498,000 20 MEGA.2,5X42 NR 1000 GUAINA PVC DM.INT.2,5x42 TAGL. / 210,000 21 MOL2000/00 NR 2000 MOLLA INT.-PULSANTI ZINCATA BI / 1424,000 22 MOL3000/05 NR 600 MOLLA PULSANTE LUNGA ZINC.BIAN / 1000,800 23 MOL4011/00 NR 2400 MOLLA PULSANTI / 100,800 24 MOL4050/02 NR 4000 MOLLA RITORNO ELICA / 1688,000 25 PER2000/02 NR 5000 TER.MOL.GAMBO CORTO TESTA ALTA / 4890,000 26 PLA2012/01 NR 500 PULSANTE LUMINOSO AVORIO / 1564,000 27 PLA2012/02 NR 2000 INTERNO PULS.LUMINOSO ROSSO / 1260,000 28 PLA2015/00 NR 1500 CORPO BIPOL.LUM. 4 USC. NERO / 12826,500 29 PLA2015/01 NR 1000 TELAIET.INTERRUTTORE NERO / 2247,000 30 PLA2015/02 NR 434 TASTO LUMINOSO TAMPOGRAFATO "0 / 1363,194 31 PLA2021/00 NR 1500 CORPO PULSANTE 2 USCITE NERO / 11953,500 32 PLA2024/02 NR 50 POMELLO NEW PER ART.2024 / 165,000 Bolla con continuazione 19300011 08/01/2019 COMPARIN SYSTEM S.R.L. VIA F.TASCA 145 35010 SAN PIETRO IN GU PD Italia COMPARIN SYSTEM S.R.L. VIA F.TASCA 145 35010 SAN PIETRO IN GU PD Italia ASSEGNATO N.Ord. Peso 33 PLA2050.01 NR 2400 MOSTRINA UNIV.3FORI AVORIO LAS / 36969,600 34 PLA3000/05 NR 500 TASTO INTER. TL CON CANNOTTI C / 2095,000 35 PLA3012/01 NR 375 PULSANTE LUMINOSO SERIE TL / 1672,875 36 PLA4012/03 NR 2000 SOTTOTASTO TRASPARENTE / 5028,000 37 PLA4039/04 NR 6000 SOTTOELICA NERO / 6240,000 38 PLA4039/05 NR 5200 ELICA DI SICUREZZA NERO / 4134,000 39 PLA4045/00 NR 4500 CORPO PRESA BIVALENTE FLEXÌ / 36454,500 40 PLA4045/01 NR 2500 MOSTRINA PRESA BIVALENTE FLEXÌ / 13017,500 41 PLA4045/01WH NR 5000 MOSTRINA PRESA BIV. BIANCA / 26870,000 42 PLA4050/00 NR 3000 CORPO PRESA UNIVERSALE 2M / 23250,000 43 PLA4051/00WH NR 120 MOSTRINA TV SAT BIANCO / 810,960 44 PLA4080/00 NR 20000 MOSTRINA FALSO POLO FLEXÌ / 75300,000 45 PLA4080/00WH NR 8600 MOSTRINA FALSO POLO BIANCA / 33720,600 46 PLA4600/00 NR 65000 ADATTATORE SUPPORTO FLEXÌ / 17615,000 47 PLA4604/00 NR 1500 SUPPORTO 4P FLEXÌ / 32133,000 48 PLA4607/00 NR 500 SUPPORTO 7P FLEXÌ / 14846,500 49 PLA5703/00N NR 62 LASTRA TAGLIATA E FORATA 3M NE / 50 PLA5703/00NG NR 80 LASTRA TAGLIATA E FORATA 3M NE / 51 PLA5703/01 NR 160 CORNICE 3P ELITE TRASPARENTE / 2602,400 52 PLA7604/00 NR 300 SUPPORTO 4M FLAT / 6432,000 53 PLA7607/00 NR 200 SUPPORTO 7M FLAT / 5847,800 54 R.75.O NR 200 RESIST. 1/4 W 75 OHMS 1% / 55 S.4050/001 NR 240 MOSTR. UNIV. VERNICIATA ARGENT / 3298,560 56 S.5700.3CR NR 240 ANELLO ELITE 3P CROMATO / 1712,880 57 SACCH.30X42 NR 21 SACCH. PLT CM. 30X40 SPESS. 0, / 21,273 58 SACCH30X22 NR 200 SACCH. PLT CM. 20X30 SPESS. 0, / 1231,400 59 SCA.CLICK NR 100 SCATOLA CLICK 20,53X16X9,5 / 60 SCA.FLAT/3 NR 10 SCATOLA AUTOMONTANTE X PLACCHE / 1350,000 61 SCA.FLEX NR 8 SCATOLA FLEX 299X145X105 / 62 VBX.M3,5X22 NR 8000 V.T/BOMB.COMB.CIL.3,5X22 ZB / 11064,000 Bolla con continuazione 19300011 08/01/2019 COMPARIN SYSTEM S.R.L. VIA F.TASCA 145 35010 SAN PIETRO IN GU PD Italia COMPARIN SYSTEM S.R.L. VIA F.TASCA 145 35010 SAN PIETRO IN GU PD Italia ASSEGNATO N.Ord. Peso 63 22520036 NR 120 PRESA ULB CONN.MASCHIO 0 DB / 7897,200 ************************************************** NR 02 PALLET 80 X 120 + NR. 01 PALLET 74 X 74 PESO TOTALE KG. 630 ************************************************** 5HL 3 BANCALI Destinatario 3 630,00 USCITA IN C/LAVORO A FORNITORE 08/01/2019 16:11:16 //FINE// """# let stringRange = NSRange(location: 0, length: testString.utf16.count) if let firstMatch = regex.firstMatch(in: testString, range: stringRange) { let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) } print(result) } else { print("No matches were found.") }

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 Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression