Regular Expressions 101

Save & Share

  • Regex Version: ver. 2
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to Community Library

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

/
/
ig

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 = "(?:\\s*(?=\\w+\\.|.*as\\s+|)(\\*|\\w+)(?=\\s*(?=,|from)))"; final String string = "SELECT\n" + "PAFCODDNE \"Cod. gestione\"\n" + ",PAFTYPE \"Tipo\"\n" + ",PAFFLUSSO \"N. flusso\"\n" + ",PAFNUMERO \"N. rata\"\n" + ",PAFDTSCAD \"Data scadenza\"\n" + ",PAFSTARTF \"Data inizio fisc.\"\n" + ",PAFSTOPF \"Data fine fisc.\"\n" + ",PAFDSTART \"DTREG\" \"Pafdstart Dtreg \"\n" + ",PAFDTMORA \"Data incasso\"\n" + ",PAFVALORE \"Importo\"\n" + ",PAFQCAP \"Quota capitale\"\n" + ",PAFQINT \"Quota interessi\"\n" + ",PAFQIND \"Quota indicizzazione\"\n" + ",PAFCAPRES \"Capitale residuo\"\n" + ",PAFVALORECTV \"Controvalore\"\n" + ",PAFQCAPIAS \"Quota capitale (IAS)\"\n" + ",PAFQINTIAS \"Quota interessi (IAS)\"\n" + ",PAFCAPRESIAS \"Capitale Residuo (IAS)\"\n" + ",PAFTIAS \"Tasso ias\"\n" + ",PAFID \"Cod. controparte\"\n" + ",PAFDESC \"Tipo flusso\"\n" + ",PAFCAMBIOM \"Cambio\"\n" + ",PAFCAMBIOF \"Cambio Fattura\"\n" + ",PAFOSCCAMB \"Oscillazione cambio espresso\"\n" + ",PAFCODCESP \"Cod. bene\"\n" + ",PAFPARMAT \"Partita\"\n" + ",PAFMATESERC \"Esercizio\"\n" + ",PAFMATNRMOV \"N. movimento\"\n" + ",PAFDTMAT \"Data maturazione\"\n" + ",PAFDTBATCH \"Data prev. fatturazione\"\n" + ",PAFRIDPROG \"Progr. effetto\"\n" + ",PAFRIDDATA \"Data effetto\"\n" + ",PAFCAMNUM \"Numero cambiale\"\n" + ",CLCRECEIV \"Tipo\"\n" + ",CLCTYPE \"Condition type\"\n" + ",CLCINTPFLUSSIDESCRIZ \"Causale\"\n" + ",CLCSIGLA \"Divisa\"\n" + ",CLCSTSFLU \"Stato\"\n" + ",CLCTPMATDESCRIZ \"Status maturazione\"\n" + ",CLCDESTPRID \"Status RID\"\n" + ",CLCMATURITYDESCRIZ \"Scadenza\"\n" + " FROM (SELECT \n" + "ALIASBASE.CDCMPANY, \n" + "ALIASBASE.PAFCODCTR, \n" + "ALIASBASE.PAFDTSCAD, \n" + "NUMFLUSSO.NUMERO, \n" + "ALIASBASE.PAFDESC, \n" + "ALIASBASE.PAFTYPE, \n" + "ALIASBASE.PAFNATURE, \n" + "ALIASBASE.PAFRECEIV, \n" + "ALIASBASE.PAFCAUSAL, \n" + "ALIASBASE.PAFCODDNE, \n" + "ALIASBASE.PAFMATURITY,\n" + "CASE \n" + " WHEN ALIASBASE.PAFTYPE = 'P' THEN '+'\n" + " ELSE '-'\n" + "END CLCDESCSEGNO,\n" + "ALIASBASE.PAFDIVISA,\n" + "TCCURRENCY.ACRONYM CLCSIGLA, \n" + "TCCURRENCY.TEDECDIGITS, \n" + "ALIASBASE.PAFCAMBIOM, \n" + "ALIASBASE.PAFVALORECTV, \n" + "ALIASBASE.PAFQCAPCTV, \n" + "ALIASBASE.PAFQINTCTV, \n" + "ALIASBASE.PAFCAPRESCTV, \n" + "ALIASBASE.PAFQCAPIASCTV, \n" + "ALIASBASE.PAFQINTIASCTV, \n" + "ALIASBASE.PAFCAPRESIASCTV, \n" + "ALIASBASE.PAFDTSTOP, \n" + "ALIASBASE.PAFDSTART, \n" + "ALIASBASE.PAFDTMORA, \n" + "ALIASBASE.PAFSTOPF, \n" + "ALIASBASE.PAFID, \n" + "ALIASBASE.PAFFLUSSO, \n" + "ALIASBASE.PAFNUMERO, \n" + "ALIASBASE.PAFSTARTF, \n" + "TABDNE.DESCRIZ CLCDNEDESCRIZ,\n" + "INTTPFLUSSI.DESCRIZ CLCINTPFLUSSIDESCRIZ,\n" + "SIANAGR.ANADENOM, \n" + "DECODE(PAFRECEIV, 'F', 'Finanziario',\n" + " 'S', 'Servizio', \n" + " 'O', 'Altro', \n" + " 'M', 'Mora') CLCRECEIV,\n" + "DECODE(PAFTYPE, 'O', 'Onere',\n" + " 'P', 'Provento') CLCTYPE,\n" + "DECODE(PAFNATURE, 'C', 'Cliente',\n" + " 'F', 'Fornitore') CLCNATURE,\n" + "INTOPMATURITY.DESCRIP CLCMATURITYDESCRIZ,\n" + "ALIASBASE.PAFRIDPROG ,\n" + "ALIASBASE.PAFTIAS,\n" + "ALIASBASE.PAFCODCESP,\n" + "SICESPIT.CESRIGA, \n" + "SIANAIND.INDRAGSIND, \n" + "SIANAIND.INDLOC, \n" + "SIANAIND.INDIRIZZO, \n" + "ALIASBASE.PAFOSCCAMB,\n" + "ALIASBASE.PAFCAMBIOF,\n" + "ALIASBASE.PAFPARMAT, \n" + "ALIASBASE.PAFTPMAT, \n" + "ALIASBASE.PAFSTSFLU, \n" + "ALIASBASE.PAFMATESERC,\n" + "ALIASBASE.PAFMATNRMOV,\n" + "ALIASBASE.PAFDTMAT, \n" + "ALIASBASE.PAFDTBATCH, \n" + "ALIASBASE.PAFTPRID, \n" + "DECODE(ALIASBASE.PAFTPRID, 'RRIC', 'Effe o ricevuto',\n" + " 'REST', 'Effe o estra o',\n" + " 'RACC', 'Effe o accreditato') CLCDESTPRID,\n" + "ALIASBASE.PAFRIDDATA, \n" + "DECODE( COALESCE(ALIASBASE.PAFTPMAT,'0'), '0', 'Non maturato',\n" + " '1', 'Maturato') CLCTPMATDESCRIZ,\n" + "DECODE(ALIASBASE.PAFSTSFLU, 'A', 'A ivo', \n" + " 'C', 'Ina ivo', \n" + " 'S', 'Sospeso') CLCSTSFLU,\n" + "ALIASBASE.PAFFLRECEIPT, \n" + "ALIASBASE.PAFRECEIPT,\n" + "ALIASBASE.PAFFAESERC,\n" + "ALIASBASE.PAFDTFA,\n" + "ALIASBASE.PAFFANRMOV, ALIASBASE.PAFCODSUB\n\n" + ",ALIASBASE.PAFVALORE, \n" + "ALIASBASE.PAFQCAP, \n" + "ALIASBASE.PAFQINT, \n" + "ALIASBASE.PAFQIND, \n" + "ALIASBASE.PAFCAPRES, \n" + "ALIASBASE.PAFQCAPIAS, \n" + "ALIASBASE.PAFQINTIAS, \n" + "ALIASBASE.PAFCAPRESIAS, \n" + " LsGeneric.ControvaloreToStr('01', ALIASBASE.PAFVALORECTV) CLCPAFVALORECTV\n\n" + " ,CAST(CASE WHEN ALIASBASE.PAFTYPE = 'P' THEN\n" + " 21 ELSE\n" + " 20 END AS NUMBER(9)) CLCTRIANGOLO\n" + " ,CAST(\n" + " CASE\n" + " WHEN PAFTPMAT IS NOT NULL AND\n" + " ((RIGPARTITA IS NULL AND PAFNATURE = 'C') OR\n" + " ((ALIASBASE.PAFPARMAT IS NULL AND PAFNATURE = 'F'))) THEN 5\n" + " WHEN PAFTPMAT IS NULL THEN 4\n" + " WHEN (PAFNATURE = 'C' AND\n" + " COALESCE(VISALDIPARTFLUSSI.TOTSPDIV, 0) > ( SELECT\n" + " COALESCE(ARRPOS, 0 )\n" + " FROM\n" + " TABARROT\n" + " WHERE\n" + " TABARROT.CDCMPANY = '01' AND\n" + " TABARROT.CDARROT = 'PAR'\n" + " )\n" + " ) THEN 7\n" + " WHEN (PAFNATURE = 'C' AND\n" + " COALESCE(VISALDIPARTFLUSSI.TOTSPDIV, 0) <= (SELECT\n" + " COALESCE(ARRPOS, 0 )\n" + " FROM\n" + " TABARROT\n" + " WHERE\n" + " TABARROT.CDCMPANY = '01' AND\n" + " TABARROT.CDARROT = 'PAR'\n" + " )\n" + " ) THEN\n" + " CASE\n" + " WHEN PAFTPMAT = 0 THEN 4\n" + " ELSE 5\n" + " END\n" + " WHEN (PAFNATURE = 'F' AND\n" + " ( (SELECT VISALDISIPAFFOR.SALDOFOR\n" + " FROM VISALDISIPAFFOR\n" + " WHERE\n" + " VISALDISIPAFFOR.CDCMPANY = ALIASBASE.CDCMPANY AND\n" + " VISALDISIPAFFOR.RIGCDANA = ALIASBASE.PAFID AND\n" + " VISALDISIPAFFOR.FORPARMAT = ALIASBASE.PAFPARMAT)\n" + " <\n" + " ( SELECT\n" + " COALESCE(-ARRNEG, 0 )\n" + " FROM\n" + " TABARROT\n" + " WHERE\n" + " TABARROT.CDCMPANY = '01' AND\n" + " TABARROT.CDARROT = 'PAR')\n" + " )\n" + " ) THEN 7\n" + " WHEN (PAFNATURE = 'F' AND\n" + " ( (SELECT VISALDISIPAFFOR.SALDOFOR\n" + " FROM VISALDISIPAFFOR\n" + " WHERE\n" + " VISALDISIPAFFOR.CDCMPANY = '01' AND\n" + " VISALDISIPAFFOR.RIGCDANA = ALIASBASE.PAFID AND\n" + " VISALDISIPAFFOR.FORPARMAT = ALIASBASE.PAFPARMAT)\n" + " >=\n" + " (SELECT\n" + " COALESCE(-ARRNEG, 0 )\n" + " FROM\n" + " TABARROT\n" + " WHERE\n" + " TABARROT.CDCMPANY = '01' AND\n" + " TABARROT.CDARROT = 'PAR'\n" + " )\n" + " )\n" + " ) THEN 5\n" + " ELSE 5\n" + " END\n" + " AS NUMBER(9)) CLCSEMAFORO, \n" + " PAFCAMNUM \n" + " FROM\n" + "SIPIAFIN ALIASBASE\n" + " LEFT OUTER JOIN\n" + " INTTPFLUSSI\n" + " ON (ALIASBASE.PAFCAUSAL = INTTPFLUSSI.CODICE)\n" + " LEFT OUTER JOIN TABDNE ON (TABDNE.CDCMPANY = ALIASBASE.CDCMPANY)\n" + " AND (TABDNE.CDDNE = ALIASBASE.PAFCODDNE)\n" + " LEFT OUTER JOIN\n" + " TCCURRENCY\n" + " ON (ALIASBASE.PAFDIVISA = TCCURRENCY.CDCURRENCY)\n" + " LEFT JOIN SIANAGR ON ALIASBASE.PAFID = SIANAGR.ANACODANA\n" + " LEFT OUTER JOIN INTOPMATURITY ON INTOPMATURITY.CODE = ALIASBASE.PAFMATURITY\n" + "LEFT OUTER JOIN SICESPIT \n" + " ON (SICESPIT.CDCMPANY = ALIASBASE.CDCMPANY)\n" + " AND (SICESPIT.CESCODCES = ALIASBASE.PAFCODCESP)\n" + "LEFT OUTER JOIN SIANAIND\n" + " ON (ALIASBASE.PAFID = SIANAIND.INDCODANA)\n" + " AND (ALIASBASE.PAFADDRESS = SIANAIND.INDCODIND) LEFT OUTER JOIN \n" + " (\n" + " SELECT \n" + " ROWNUM - 1 NUMERO,\n" + " T1.CDCMPANY, \n" + " T1.PAFCODCTR,\n" + "T1.PAFCODSUB,\n" + " T1.PAFDTSCAD \n" + " FROM \n" + " ( \n" + " SELECT \n" + " ALIASBASE2.CDCMPANY,\n" + " ALIASBASE2.PAFCODCTR,\n" + "ALIASBASE2.PAFCODSUB,\n" + " ALIASBASE2.PAFDTSCAD\n" + " FROM \n" + " SIPIAFIN ALIASBASE2\n" + " WHERE \n" + " (ALIASBASE2.CDCMPANY = UPPER('01')) AND\n" + " (ALIASBASE2.PAFCODCTR = UPPER('177749')) AND (ALIASBASE2.PAFCODSUB = UPPER('002')) GROUP BY \n" + " ALIASBASE2.CDCMPANY,\n" + " ALIASBASE2.PAFCODCTR, ALIASBASE2.PAFCODSUB, ALIASBASE2.PAFDTSCAD \n" + " ORDER BY ALIASBASE2.PAFDTSCAD \n" + " )T1 \n" + " ) NUMFLUSSO \n" + " ON (ALIASBASE.CDCMPANY = NUMFLUSSO.CDCMPANY) AND\n" + " (ALIASBASE.PAFCODCTR = NUMFLUSSO.PAFCODCTR) AND\n" + " (ALIASBASE.PAFDTSCAD = NUMFLUSSO.PAFDTSCAD) AND (ALIASBASE.PAFCODSUB = NUMFLUSSO.PAFCODSUB) \n" + " LEFT OUTER JOIN SICTRITIVPY ON SICTRITIVPY.CDCMPANY = ALIASBASE.CDCMPANY AND SICTRITIVPY.CONTRACT = ALIASBASE.PAFCODCTR \n" + " LEFT OUTER JOIN VISALDIPARTFLUSSI \n" + " ON \n" + " VISALDIPARTFLUSSI.CDCMPANY = ALIASBASE.CDCMPANY AND \n" + " VISALDIPARTFLUSSI.RIGCDCTR = ALIASBASE.PAFCODCTR AND \n" + " VISALDIPARTFLUSSI.RIGCDANA = ALIASBASE.PAFID AND \n" + " VISALDIPARTFLUSSI.RIGCDDIV = CASE \n" + " WHEN SICTRITIVPY.INVOICECURR = 'R' THEN 'EUR'\n" + " WHEN SICTRITIVPY.INVOICECURR = 'C' THEN ALIASBASE.PAFDIVISA\n" + " END AND \n" + " VISALDIPARTFLUSSI.RIGPARTITA = ALIASBASE.PAFPARMAT WHERE (ALIASBASE.CDCMPANY = '01') AND\n" + "(ALIASBASE.PAFCODCTR = '177749') AND\n" + "(ALIASBASE.PAFCODSUB = '002') AND\n" + "(PAFNATURE = 'C') AND\n" + "(PAFTYPE = 'P')\n" + " ORDER BY ALIASBASE.CDCMPANY, ALIASBASE.PAFCODCTR, ALIASBASE.PAFDTSCAD, ALIASBASE.PAFDTMORA, ALIASBASE.PAFNATURE, ALIASBASE.PAFTYPE, ALIASBASE.PAFNUMERO, ALIASBASE.PAFRECEIV, ALIASBASE.PAFMATURITY DESC, ALIASBASE.PAFSTARTF, ALIASBASE.PAFSTOPF\n" + " , PAFCODCESP)"; final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); 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