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 java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "Vector 1 is.*?\\n201[56]-..-..\\ (?P<start_ts>[0-9:,]*)\\ INFO RequestProcessor-. xfd.xfdservice - Dispensing pattern for tcs:. recipe:. swathe:0.*?\\n201[56]-..-..\\ (?P<end_ts>[0-9:,]*)\\ INFO RequestProcessor-. xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\\n201[56]-..-..\\ (?P<start2_ts>[0-9:,]*)\\ INFO RequestProcessor-. xfd.xfdservice - Dispensing pattern for tcs:. recipe:. swathe:1.*?\\n201[56]-..-..\\ (?P<fake_ts>[0-9:,]*)\\ INFO RequestProcessor-. xfd.XPM - XaarCmdAPI: Calling bXaarScorpionEnablePrintMode...call success\\n201[56]-..-..\\ (?P<end2_ts>[0-9:,]*)\\ INFO RequestProcessor-. xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\\n"; final String string = "2015-09-02 09:59:09,355 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSelectSEPD...call success\n" + "2015-09-02 09:59:09,359 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionReloadAppXMLFileParameters...call success\n" + "2015-09-02 09:59:09,362 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling XaarScorpionGetMaxHeadBlocksXPM...call success\n" + "2015-09-02 09:59:09,372 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetupImageDataParametersUpdated...call success\n" + "2015-09-02 09:59:09,384 INFO RequestProcessor-5 xfd.DispenseHeadXpm - Head 1014349 row 1 had 0 drops, row 2 had 28665 drops after rows were swapped.\n" + "2015-09-02 09:59:09,399 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetPrintDataUpdated...call success\n" + "2015-09-02 09:59:09,399 INFO RequestProcessor-5 xfd.printmanagerXPM - Loading swathe 1 of 1\n" + "2015-09-02 09:59:09,399 INFO RequestProcessor-5 xfd.DispenseHeadXpm - loadBitmap: = 128, colCount = 741, totalSize = 94848\n" + "2015-09-02 09:59:09,400 INFO RequestProcessor-5 xfd.DispenseHeadXpm - XPMSEPDSetup: 3\n" + "2015-09-02 09:59:09,406 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSelectSEPD...call success\n" + "2015-09-02 09:59:09,410 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionReloadAppXMLFileParameters...call success\n" + "2015-09-02 09:59:09,414 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling XaarScorpionGetMaxHeadBlocksXPM...call success\n" + "2015-09-02 09:59:09,425 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetupImageDataParametersUpdated...call success\n" + "2015-09-02 09:59:09,437 INFO RequestProcessor-5 xfd.DispenseHeadXpm - Head 1014349 row 1 had 0 drops, row 2 had 28536 drops after rows were swapped.\n" + "2015-09-02 09:59:09,454 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetPrintDataUpdated...call success\n" + "2015-09-02 09:59:09,488 INFO RequestProcessor-5 xfd.xfdservice - getDropRecipeSwatheVectors 0 rec:0\n" + "2015-09-02 09:59:09,489 INFO RequestProcessor-5 xfd.xfdservice - Vector 0 is -13.017231449999999, -4.97406405 to 17.727038825, -4.97406405\n" + "2015-09-02 09:59:09,489 INFO RequestProcessor-5 xfd.xfdservice - Vector 1 is 18.057147025, -4.97406405 to -12.704761775000001, -4.97406405\n" + "2015-09-02 09:59:09,496 INFO RequestProcessor-5 xfd.xfdservice - Dispensing pattern for tcs:0 recipe:0 swathe:0\n" + "2015-09-02 09:59:09,498 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\n" + "2015-09-02 09:59:09,533 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionEnablePrintMode...call success\n" + "2015-09-02 09:59:09,533 INFO RequestProcessor-5 xfd.DispenseHeadXpm - UseXPMComboFunctions: true\n" + "2015-09-02 09:59:09,551 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpion_loadControlBlock_Combo...call success\n" + "2015-09-02 09:59:09,552 INFO RequestProcessor-5 xfd.printmanagerXPM - Setting up DDFS. DDFSValue = 1341370\n" + "2015-09-02 09:59:09,552 INFO RequestProcessor-5 xfd.printmanagerXPM - swathe.internalEncoderFrequency_Hz = 28347.04149014728\n" + "2015-09-02 09:59:09,552 INFO RequestProcessor-5 xfd.printmanagerXPM - DDFSMultiplier = 0.3356\n" + "2015-09-02 09:59:09,552 INFO RequestProcessor-5 xfd.printmanagerXPM - cycleMode = 3\n" + "2015-09-02 09:59:09,552 INFO RequestProcessor-5 xfd.printmanagerXPM - encoderDivide = 47\n" + "2015-09-02 09:59:09,552 INFO RequestProcessor-5 xfd.printmanagerXPM - ...DDFSValue (multiplied together) = 1341370\n" + "2015-09-02 09:59:09,557 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetDDFSValueSEPD...call success\n" + "2015-09-02 09:59:09,557 INFO RequestProcessor-5 xfd.printmanagerXPM - Using internal encoder frequency of 28347.04149014728 Hz\n" + "2015-09-02 09:59:09,557 INFO RequestProcessor-5 xfd.printmanagerXPM - SetDDFSEnable = 1\n" + "2015-09-02 09:59:09,561 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetDDFSEnable...call success\n" + "2015-09-02 09:59:09,561 INFO RequestProcessor-5 xfd.printmanagerXPM - SetPDInternal = 0\n" + "2015-09-02 09:59:09,564 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetPDInternalSEPD...call success\n" + "2015-09-02 09:59:09,566 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\n" + "2015-09-02 09:59:09,568 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\n" + "2015-09-02 09:59:09,573 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionEnablePrintMode...call success\n" + "2015-09-02 09:59:09,575 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\n" + "2015-09-02 09:59:10,035 INFO RequestProcessor-5 xfd.xfdservice - Dispensing pattern for tcs:0 recipe:0 swathe:1\n" + "2015-09-02 09:59:10,038 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\n" + "2015-09-02 09:59:10,071 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionEnablePrintMode...call success\n" + "2015-09-02 09:59:10,071 INFO RequestProcessor-5 xfd.DispenseHeadXpm - UseXPMComboFunctions: true\n" + "2015-09-02 09:59:10,098 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpion_loadControlBlock_Combo...call success\n" + "2015-09-02 09:59:10,099 INFO RequestProcessor-5 xfd.printmanagerXPM - Setting up DDFS. DDFSValue = 1341370\n" + "2015-09-02 09:59:10,099 INFO RequestProcessor-5 xfd.printmanagerXPM - swathe.internalEncoderFrequency_Hz = 28347.04149014728\n" + "2015-09-02 09:59:10,099 INFO RequestProcessor-5 xfd.printmanagerXPM - DDFSMultiplier = 0.3356\n" + "2015-09-02 09:59:10,099 INFO RequestProcessor-5 xfd.printmanagerXPM - cycleMode = 3\n" + "2015-09-02 09:59:10,099 INFO RequestProcessor-5 xfd.printmanagerXPM - encoderDivide = 47\n" + "2015-09-02 09:59:10,099 INFO RequestProcessor-5 xfd.printmanagerXPM - ...DDFSValue (multiplied together) = 1341370\n" + "2015-09-02 09:59:10,104 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetDDFSValueSEPD...call success\n" + "2015-09-02 09:59:10,104 INFO RequestProcessor-5 xfd.printmanagerXPM - Using internal encoder frequency of 28347.04149014728 Hz\n" + "2015-09-02 09:59:10,104 INFO RequestProcessor-5 xfd.printmanagerXPM - SetDDFSEnable = 1\n" + "2015-09-02 09:59:10,109 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetDDFSEnable...call success\n" + "2015-09-02 09:59:10,109 INFO RequestProcessor-5 xfd.printmanagerXPM - SetPDInternal = 0\n" + "2015-09-02 09:59:10,112 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetPDInternalSEPD...call success\n" + "2015-09-02 09:59:10,114 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\n" + "2015-09-02 09:59:10,116 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\n" + "2015-09-02 09:59:10,120 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionEnablePrintMode...call success\n" + "2015-09-02 09:59:10,122 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionXUSBBusy...call success\n" + "2015-09-02 10:00:05,341 INFO RequestProcessor-5 xfd.xfdservice - setDenseDropRecipes 0 count:0\n" + "2015-09-02 10:00:05,342 INFO RequestProcessor-5 xfd.xfdservice - Drop patterns loaded and ready for dispense.\n" + "2015-09-02 10:00:05,403 WARN RequestProcessor-5 xfd.xfdservice - No fluidType Specified, using first headgroup\n" + "2015-09-02 10:00:05,403 INFO RequestProcessor-5 xfd.xfdservice - Dispensing with headGroup 0\n" + "2015-09-02 10:00:05,415 INFO RequestProcessor-5 xfd.xfdservice - Successfully generated 2 swathes for pattern.\n" + "2015-09-02 10:00:05,415 INFO RequestProcessor-5 xfd.printmanagerXPM - Loading swathe 1 of 1\n" + "2015-09-02 10:00:05,416 INFO RequestProcessor-5 xfd.DispenseHeadXpm - loadBitmap: = 128, colCount = 741, totalSize = 94848\n" + "2015-09-02 10:00:05,416 INFO RequestProcessor-5 xfd.DispenseHeadXpm - XPMSEPDSetup: 3\n" + "2015-09-02 10:00:05,421 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSelectSEPD...call success\n" + "2015-09-02 10:00:05,424 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionReloadAppXMLFileParameters...call success\n" + "2015-09-02 10:00:05,427 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling XaarScorpionGetMaxHeadBlocksXPM...call success\n" + "2015-09-02 10:00:05,436 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetupImageDataParametersUpdated...call success\n" + "2015-09-02 10:00:05,447 INFO RequestProcessor-5 xfd.DispenseHeadXpm - Head 1014349 row 1 had 8329 drops, row 2 had 8085 drops after rows were swapped.\n" + "2015-09-02 10:00:05,465 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetPrintDataUpdated...call success\n" + "2015-09-02 10:00:05,465 INFO RequestProcessor-5 xfd.printmanagerXPM - Loading swathe 1 of 1\n" + "2015-09-02 10:00:05,465 INFO RequestProcessor-5 xfd.DispenseHeadXpm - loadBitmap: = 128, colCount = 741, totalSize = 94848\n" + "2015-09-02 10:00:05,466 INFO RequestProcessor-5 xfd.DispenseHeadXpm - XPMSEPDSetup: 3\n" + "2015-09-02 10:00:05,469 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSelectSEPD...call success\n" + "2015-09-02 10:00:05,472 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionReloadAppXMLFileParameters...call success\n" + "2015-09-02 10:00:05,475 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling XaarScorpionGetMaxHeadBlocksXPM...call success\n" + "2015-09-02 10:00:05,484 INFO RequestProcessor-5 xfd.XPM - XaarCmdAPI: Calling bXaarScorpionSetupImageDataParametersUpdated...call success\n" + "2015-09-02 10:00:05,494 INFO RequestProcessor-5 xfd.DispenseHeadXpm - Head 1014349 row 1 had 8085 drops, row 2 had 8085 drops after rows were swapped."; final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); 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