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

/
/
gmixX

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 = "\n" + "(?:\n" + "(?<ctrl_code>\n" + " # ^[[ # ^[ | \\003\n" + " ([\\^][\\[]{2})\n" + "| # [Ctrl Key] >>> '\\e' | '^[' | '\\u001B'\n" + " (?<esc>\n" + " [\\^][\\[]\n" + " |\n" + " [\\\\][e]\n" + " |\n" + " [\\\\](?:(?i)u001b(?-i))\n" + " )\n" + "|\n" + " # ^\n" + " ([\\^][A-Z@])|([\\^])\n" + "|\n" + " # [Meta Key] \\M-\n" + " ([\\\\]M-)\n" + "|\n" + " # [^C] ^C | \\003\n" + " ([\\^]C|[\\\\]0{2}3)\n" + ")\n" + ")+"; final String string = "# Ctrl\n" + "bindkey '\\e' zle_function\n" + "bindkey '\\E' zle_function\n" + "bindkey '^[' zle_function\n" + "bindkey '\\U001b' zle_function\n" + "bindkey '\\U001B' zle_function\n" + "bindkey '\\u001b' zle_function\n" + "bindkey '\\u001B' zle_function\n\n" + "# Function keys\n" + "^[OS ^[[34~ ^[[24;6~ ^[[21;2~ ^[[18~ ^[[14^\n" + "^[OR ^[[34^ ^[[24;5~ ^[[21~ ^[[18^ ^[[13;6~\n" + "^[OQ ^[[33~ ^[[24;2~ ^[[21^ ^[[17;6~ ^[[13;5~\n" + "^[OP ^[[33^ ^[[24$ ^[[20;6~ ^[[17;5~ ^[[13;2~\n" + "^[O6S ^[[32~ ^[[24~ ^[[20;5~ ^[[17;2~ ^[[13~\n" + "^[O6R ^[[32^ ^[[24^ ^[[20;2~ ^[[17~ ^[[13^\n" + "^[O6Q ^[[31~ ^[[24@ ^[[20~ ^[[17^ ^[[12;6~\n" + "^[O6P ^[[31^ ^[[23;6~ ^[[20^ ^[[15;6~ ^[[12;5~\n" + "^[O5S ^[[29~ ^[[23;5~ ^[[19;6~ ^[[15;5~ ^[[12;2~\n" + "^[O5R ^[[29^ ^[[23;2~ ^[[19;5~ ^[[15;2~ ^[[12~\n" + "^[O5Q ^[[28~ ^[[23$ ^[[19;2~ ^[[15~ ^[[12^\n" + "^[O5P ^[[28^ ^[[23~ ^[[19~ ^[[15^ ^[[11;6~\n" + "^[O2S ^[[26~ ^[[23^ ^[[19^ ^[[14;6~ ^[[11;5~\n" + "^[O2R ^[[26^ ^[[23@ ^[[18;6~ ^[[14;5~ ^[[11;2~\n" + "^[O2Q ^[[25~ ^[[21;6~ ^[[18;5~ ^[[14;2~ ^[[11~\n" + "^[O2P ^[[25^ ^[[21;5~ ^[[18;2~ ^[[14~ ^[[11^\n\n\n\n" + "# bindkey -L | clip\n" + "bindkey \"^[\\$\" spell-word\n" + "bindkey \"^[0\" digit-argument\n" + "bindkey \"^[[1;10A\" beginning-of-buffer-or-history\n" + "bindkey '^[[1;10A' beginning-of-buffer-or-history\n" + "bindkey \"^[[1;10B\" end-of-buffer-or-history\n" + "bindkey '^[[1;10B' end-of-buffer-or-history\n" + "bindkey \"^[[1;3C\" forward-word\n" + "bindkey '^[[1;3C' forward-word\n" + "bindkey \"^[[1;3D\" backward-word\n" + "bindkey '^[[1;3D' backward-word\n" + "bindkey \"^[[1;5C\" forward-word\n" + "bindkey \"^[[1;5D\" backward-word\n" + "bindkey \"^[[1;6C\" end-of-line\n" + "bindkey '^[[1;6C' end-of-line\n" + "bindkey \"^[[1;6D\" beginning-of-line\n" + "bindkey '^[[1;6D' beginning-of-line\n" + "bindkey \"^[[1;9C\" forward-word\n" + "bindkey '^[[1;9C' forward-word\n" + "bindkey \"^[[1;9D\" backward-word\n" + "bindkey '^[[1;9D' backward-word\n" + "bindkey \"^[1\" digit-argument\n" + "bindkey \"^[[200~\" bracketed-paste\n" + "bindkey \"^[2\" digit-argument\n" + "bindkey \"^[[3~\" delete-char\n" + "bindkey \"^[3\" digit-argument\n" + "bindkey \"^[4\" digit-argument\n" + "bindkey \"^[5\" digit-argument\n" + "bindkey \"^[[5~\" up-line-or-history\n" + "bindkey \"^[6\" digit-argument\n" + "bindkey \"^[[6~\" down-line-or-history\n" + "bindkey \"^[7\" digit-argument\n" + "bindkey \"^[8\" digit-argument\n" + "bindkey \"^[9\" digit-argument\n" + "bindkey \"^[a\" accept-and-hold\n" + "bindkey \"^[A\" accept-and-hold\n" + "bindkey \"^A\" beginning-of-line\n" + "bindkey \"^[[A\" history-beginning-search-backward\n" + "bindkey \"^?\" backward-delete-char\n" + "bindkey \"^[^?\" backward-kill-word\n" + "bindkey \"^[~\" _bash_complete-word\n" + "bindkey \"^[b\" backward-word\n" + "bindkey \"^[B\" backward-word\n" + "bindkey \"^[[B\" down-line-or-history\n" + "bindkey \"^[<\" beginning-of-buffer-or-history\n" + "bindkey \"^B\" zhistory\n" + "bindkey \"^[c\" capitalize-word\n" + "bindkey \"^[[C\" forward-char\n" + "bindkey \"^[}\" _complete_debug\n" + "bindkey \"^[]\" _complete_help\n" + "bindkey \"^[^]\" _complete_tag\n" + "bindkey \"^[^_\" copy-prev-word\n" + "bindkey \"^[^[\" cycle-completion-positions\n" + "bindkey \"^[C\" zle-debug-view\n" + "bindkey \"^[[D\" backward-char\n" + "bindkey \"^D\" delete-char-or-list\n" + "bindkey \"^[/\" describe-key-briefly\n" + "bindkey '^[/' describe-key-briefly\n" + "bindkey \"^[[\" describe-key-more\n" + "bindkey \"^[d\" kill-word\n" + "bindkey \"^[D\" kill-word\n" + "bindkey \"^[^D\" list-choices\n" + "bindkey \"^[{\" dump-zstyle-context\n" + "bindkey \"^[^E\" edit-command-line\n" + "bindkey '^[^E' edit-command-line\n" + "bindkey \"^E\" end-of-line\n" + "bindkey \"^[>\" end-of-buffer-or-history\n" + "bindkey \"^[E\" open-buffer-in-editor\n" + "bindkey \"^[ \" expand-global-alias\n" + "bindkey \"^[!\" expand-history\n" + "bindkey \"^F\" forward-char\n" + "bindkey \"^[f\" forward-word\n" + "bindkey \"^[F\" forward-word\n" + "bindkey \"^[g\" get-line\n" + "bindkey '^[g' get-line\n" + "bindkey \"^[G\" push-input\n" + "bindkey '^[G' push-input\n" + "bindkey \"^[^G\" send-break\n" + "bindkey \"^G\" send-break\n" + "bindkey \"^H\" backward-delete-char\n" + "bindkey \"^[^H\" backward-kill-word\n" + "bindkey \"^[,\" _history-complete-newer\n" + "bindkey \"^[h\" zew-history-complete-word\n" + "bindkey \"^[H\" zew-history-complete-word-backwards\n" + "bindkey \"^I\" expand-or-complete\n" + "bindkey \"^[.\" insert-last-word\n" + "bindkey \"^[_\" insert-last-word\n" + "bindkey \"^[^I\" self-insert-unmeta\n" + "bindkey \"^[^J\" self-insert-unmeta\n" + "bindkey \"^J\" self-insert-unmeta\n" + "bindkey \"^K\" kill-line\n" + "bindkey \"^[^L\" clear-screen\n" + "bindkey \"^L\" clear-screen\n" + "bindkey \"^[L\" down-case-word\n" + "bindkey \"^M\" accept-line\n" + "bindkey \" \" magic-space\n" + "bindkey \"^[man\" man-command-line\n" + "bindkey \"\\M-B\\M-^V\" pasteWSL\n" + "bindkey \"\\M-B\\M-^V\" pasteWSL\n" + "bindkey \"\\M-B\" self-insert\n" + "bindkey \"^[m\" copy-earlier-word\n" + "bindkey \"^[M\" copy-prev-shell-word\n" + "bindkey \"^[^M\" self-insert-unmeta\n" + "bindkey \"^N\" down-line-or-history\n" + "bindkey \"^[-\" neg-argument\n" + "bindkey \"^[n\" history-search-forward\n" + "bindkey \"^[N\" history-search-forward\n" + "bindkey \"^O\" accept-line-and-down-history\n" + "bindkey \"^[OA\" up-line-or-beginning-search\n" + "bindkey \"^[OB\" down-line-or-beginning-search\n" + "bindkey \"^[OC\" forward-char\n" + "bindkey \"^[OD\" backward-char\n" + "bindkey \"^[OF\" end-of-line\n" + "bindkey \"^[OH\" beginning-of-line\n" + "bindkey \"^O^Z\" zui-demo-various\n" + "bindkey \"^[p\" history-search-backward\n" + "bindkey \"^[P\" history-search-backward\n" + "bindkey \"^P\" up-line-or-history\n" + "bindkey \"^[q\" push-line\n" + "bindkey \"^[Q\" push-line\n" + "bindkey \"^Q\" push-line\n" + "bindkey \"^['\" quote-line\n" + "bindkey \"^[\\\"\" quote-region\n" + "bindkey -R \"\\M-C\"-\"\\M-^?\" self-insert\n" + "bindkey -R \"\\M-^@\"-\"\\M-A\" self-insert\n" + "bindkey -R \"!\"-\"~\" self-insert\n" + "bindkey \"^[r\" zew-rotate-shell-words\n" + "bindkey \"^[R\" zew-rotate-shell-words-backwards\n" + "bindkey \"^R\" znt-history-widget\n" + "bindkey \"^@\" set-mark-command\n" + "bindkey \"^S\" history-incremental-search-forward\n" + "bindkey -s \"^[l\" \"ls^J\"\n" + "bindkey \"^[s\" spell-word\n" + "bindkey \"^[S\" spell-word\n" + "bindkey \"^[T\" insert-indented-line\n" + "bindkey \"^T\" zca-widget\n" + "bindkey \"^[t\" zew-transpose-shell-words\n" + "bindkey \"^U\" kill-whole-line\n" + "bindkey \"^_\" undo\n" + "bindkey \"^[u\" up-case-word\n" + "bindkey \"^[U\" up-case-word\n" + "bindkey \"^[|\" vi-goto-column\n" + "bindkey \"^V\" quoted-insert\n" + "bindkey \"^W\" backward-kill-word\n" + "bindkey \"^[W\" copy-region-as-kill\n" + "bindkey \"^[?\" which-command\n" + "bindkey \"^[w\" zew-backward-kill-shell-word\n" + "bindkey \"^Xa\" _expand_alias\n" + "bindkey \"^X~\" _bash_list-choices\n" + "bindkey \"^X^B\" vi-match-bracket\n" + "bindkey \"^XC\" _correct_filename\n" + "bindkey \"^Xc\" _correct_word\n" + "bindkey \"^X?\" _complete_debug\n" + "bindkey \"^Xd\" _list_expansions\n" + "bindkey \"^X^E\" edit-command-line\n" + "bindkey \"^Xe\" _expand_word\n" + "bindkey \"^[x\" execute-named-cmd\n" + "bindkey \"^X*\" expand-word\n" + "bindkey \"^X^F\" vi-find-next-char\n" + "bindkey \"^Xg\" list-expand\n" + "bindkey \"^XG\" list-expand\n" + "bindkey \"^Xh\" _complete_help\n" + "bindkey \"^X^J\" vi-join\n" + "bindkey \"^X^K\" kill-buffer\n" + "bindkey \"^Xm\" _most_recent_file\n" + "bindkey \"^X^N\" infer-next-history\n" + "bindkey \"^Xn\" _next_tags\n" + "bindkey \"^X^O\" overwrite-mode\n" + "bindkey \"^Xr\" history-incremental-search-backward\n" + "bindkey \"^X^R\" _read_comp\n" + "bindkey \"^Xs\" history-incremental-search-forward\n" + "bindkey \"^Xt\" _complete_tag\n" + "bindkey \"^Xu\" undo\n" + "bindkey \"^X^U\" undo\n" + "bindkey \"^X^V\" vi-cmd-mode\n" + "bindkey \"^X=\" what-cursor-position\n" + "bindkey \"^X^X\" exchange-point-and-mark\n" + "bindkey \"^[y\" transpose-words-match\n" + "bindkey \"^Y\" yank\n" + "bindkey \"^[z\" execute-last-named-cmd\n" + "bindkey \"^[^Z\" redo\n" + "bindkey '^[^Z' redo\n" + "bindkey \"^[[Z\" reverse-menu-complete\n" + "bindkey \"^Z\" undo\n" + "bindkey '^Z' undo\n"; final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.COMMENTS); 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