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

/
/
ims

Test String

Code Generator

Generated Code

// include the latest version of the regex crate in your Cargo.toml extern crate regex; use regex::Regex; fn main() { let regex = Regex::new(r"(?ims)<w:p.*?>.*?<w:t>\$<\/w:t>.*?test.*?<\/w:p>").unwrap(); let string = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> <w:document xmlns:ve=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\"><w:body><w:p w:rsidR=\"00EA0853\" w:rsidRDefault=\"00E24666\" w:rsidP=\"00582CB9\"><w:pPr><w:tabs><w:tab w:val=\"left\" w:pos=\"10065\"/></w:tabs><w:spacing w:before=\"120\" w:after=\"120\" w:line=\"240\" w:lineRule=\"auto\"/><w:jc w:val=\"center\"/><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:lang w:val=\"en-US\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:lang w:val=\"en-US\"/></w:rPr><w:t>APP</w:t></w:r></w:p><w:p w:rsidR=\"0035180D\" w:rsidRDefault=\"00C7412B\" w:rsidP=\"00945FB5\"><w:pPr><w:tabs><w:tab w:val=\"left\" w:pos=\"10065\"/></w:tabs><w:spacing w:before=\"120\" w:after=\"120\" w:line=\"240\" w:lineRule=\"auto\"/><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:lang w:val=\"en-US\"/></w:rPr></w:pPr><w:r w:rsidRPr=\"002E673F\"><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:lang w:val=\"en-US\"/></w:rPr><w:t>$</w:t></w:r><w:r w:rsidR=\"0035180D\" w:rsidRPr=\"002E673F\"><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:lang w:val=\"en-US\"/></w:rPr><w:t>{</w:t></w:r><w:r w:rsidR=\"005803EA\" w:rsidRPr=\"002E673F\"><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:lang w:val=\"en-US\"/></w:rPr><w:t>test</w:t></w:r><w:r w:rsidR=\"0035180D\" w:rsidRPr=\"002E673F\"><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:lang w:val=\"en-US\"/></w:rPr><w:t>}</w:t></w:r></w:p><w:p w:rsidR=\"00524DA0\" w:rsidRPr=\"002E673F\" w:rsidRDefault=\"00524DA0\" w:rsidP=\"00945FB5\"><w:pPr><w:tabs><w:tab w:val=\"left\" w:pos=\"10065\"/></w:tabs><w:spacing w:before=\"120\" w:after=\"120\" w:line=\"240\" w:lineRule=\"auto\"/><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:lang w:val=\"en-US\"/></w:rPr></w:pPr></w:p><w:p w:rsidR=\"00375D75\" w:rsidRPr=\"00496574\" w:rsidRDefault=\"00375D75\" w:rsidP=\"00496574\"><w:pPr><w:spacing w:after=\"0\" w:line=\"120\" w:lineRule=\"auto\"/><w:rPr><w:rFonts w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:cs=\"Times New Roman\"/><w:b/><w:sz w:val=\"2\"/><w:lang w:val=\"en-US\"/></w:rPr></w:pPr></w:p><w:sectPr w:rsidR=\"00375D75\" w:rsidRPr=\"00496574\" w:rsidSect=\"00550158\"><w:pgSz w:w=\"11906\" w:h=\"16838\" w:code=\"9\"/><w:pgMar w:top=\"1134\" w:right=\"707\" w:bottom=\"568\" w:left=\"1134\" w:header=\"708\" w:footer=\"708\" w:gutter=\"0\"/><w:cols w:space=\"708\"/><w:docGrid w:linePitch=\"360\"/></w:sectPr></w:body></w:document>"; // result will be a tuple containing the start and end indices for the first match in the string let result = regex.captures(string); let (start, end) = match result { Some((s, e)) => (s, e), None => { // ... } }; println!("{}", &string[start, end]); }

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 Rust, please visit: https://docs.rs/regex/latest/regex/