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

/
/
gm

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 = "^(a[abefkmnrsvyz]|b[aegimnors]|c[aehorsuvy]|d[aevz]|e[elnostu]|f[afijory]|g[adlnuv]|h[aeiortuyz]|i[adegikostu]|j[av]|k[agijklmnorsuvwy]|l[abginotuv]|m[ghiklnrsty]|n[abdeglnorvy]|o[cjmrs]|p[ailst]|q[u]|r[mnouw]|s[acdegiklmnoqrstuvw]|t[aeghiklnorstwy]|u[gkrz]|v[eio]|w[ao]|x[h]|y[io]|z[ahu])$"; final String string = "aa\n" + "ab\n" + "ac\n" + "ad\n" + "ae\n" + "af\n" + "ag\n" + "ah\n" + "ai\n" + "aj\n" + "ak\n" + "al\n" + "am\n" + "an\n" + "ao\n" + "ap\n" + "aq\n" + "ar\n" + "as\n" + "at\n" + "au\n" + "av\n" + "aw\n" + "ax\n" + "ay\n" + "az\n" + "ba\n" + "bb\n" + "bc\n" + "bd\n" + "be\n" + "bf\n" + "bg\n" + "bh\n" + "bi\n" + "bj\n" + "bk\n" + "bl\n" + "bm\n" + "bn\n" + "bo\n" + "bp\n" + "bq\n" + "br\n" + "bs\n" + "bt\n" + "bu\n" + "bv\n" + "bw\n" + "bx\n" + "by\n" + "bz\n" + "ca\n" + "cb\n" + "cc\n" + "cd\n" + "ce\n" + "cf\n" + "cg\n" + "ch\n" + "ci\n" + "cj\n" + "ck\n" + "cl\n" + "cm\n" + "cn\n" + "co\n" + "cp\n" + "cq\n" + "cr\n" + "cs\n" + "ct\n" + "cu\n" + "cv\n" + "cw\n" + "cx\n" + "cy\n" + "cz\n" + "da\n" + "db\n" + "dc\n" + "dd\n" + "de\n" + "df\n" + "dg\n" + "dh\n" + "di\n" + "dj\n" + "dk\n" + "dl\n" + "dm\n" + "dn\n" + "do\n" + "dp\n" + "dq\n" + "dr\n" + "ds\n" + "dt\n" + "du\n" + "dv\n" + "dw\n" + "dx\n" + "dy\n" + "dz\n" + "ea\n" + "eb\n" + "ec\n" + "ed\n" + "ee\n" + "ef\n" + "eg\n" + "eh\n" + "ei\n" + "ej\n" + "ek\n" + "el\n" + "em\n" + "en\n" + "eo\n" + "ep\n" + "eq\n" + "er\n" + "es\n" + "et\n" + "eu\n" + "ev\n" + "ew\n" + "ex\n" + "ey\n" + "ez\n" + "fa\n" + "fb\n" + "fc\n" + "fd\n" + "fe\n" + "ff\n" + "fg\n" + "fh\n" + "fi\n" + "fj\n" + "fk\n" + "fl\n" + "fm\n" + "fn\n" + "fo\n" + "fp\n" + "fq\n" + "fr\n" + "fs\n" + "ft\n" + "fu\n" + "fv\n" + "fw\n" + "fx\n" + "fy\n" + "fz\n" + "ga\n" + "gb\n" + "gc\n" + "gd\n" + "ge\n" + "gf\n" + "gg\n" + "gh\n" + "gi\n" + "gj\n" + "gk\n" + "gl\n" + "gm\n" + "gn\n" + "go\n" + "gp\n" + "gq\n" + "gr\n" + "gs\n" + "gt\n" + "gu\n" + "gv\n" + "gw\n" + "gx\n" + "gy\n" + "gz\n" + "ha\n" + "hb\n" + "hc\n" + "hd\n" + "he\n" + "hf\n" + "hg\n" + "hh\n" + "hi\n" + "hj\n" + "hk\n" + "hl\n" + "hm\n" + "hn\n" + "ho\n" + "hp\n" + "hq\n" + "hr\n" + "hs\n" + "ht\n" + "hu\n" + "hv\n" + "hw\n" + "hx\n" + "hy\n" + "hz\n" + "ia\n" + "ib\n" + "ic\n" + "id\n" + "ie\n" + "if\n" + "ig\n" + "ih\n" + "ii\n" + "ij\n" + "ik\n" + "il\n" + "im\n" + "in\n" + "io\n" + "ip\n" + "iq\n" + "ir\n" + "is\n" + "it\n" + "iu\n" + "iv\n" + "iw\n" + "ix\n" + "iy\n" + "iz\n" + "ja\n" + "jb\n" + "jc\n" + "jd\n" + "je\n" + "jf\n" + "jg\n" + "jh\n" + "ji\n" + "jj\n" + "jk\n" + "jl\n" + "jm\n" + "jn\n" + "jo\n" + "jp\n" + "jq\n" + "jr\n" + "js\n" + "jt\n" + "ju\n" + "jv\n" + "jw\n" + "jx\n" + "jy\n" + "jz\n" + "ka\n" + "kb\n" + "kc\n" + "kd\n" + "ke\n" + "kf\n" + "kg\n" + "kh\n" + "ki\n" + "kj\n" + "kk\n" + "kl\n" + "km\n" + "kn\n" + "ko\n" + "kp\n" + "kq\n" + "kr\n" + "ks\n" + "kt\n" + "ku\n" + "kv\n" + "kw\n" + "kx\n" + "ky\n" + "kz\n" + "la\n" + "lb\n" + "lc\n" + "ld\n" + "le\n" + "lf\n" + "lg\n" + "lh\n" + "li\n" + "lj\n" + "lk\n" + "ll\n" + "lm\n" + "ln\n" + "lo\n" + "lp\n" + "lq\n" + "lr\n" + "ls\n" + "lt\n" + "lu\n" + "lv\n" + "lw\n" + "lx\n" + "ly\n" + "lz\n" + "ma\n" + "mb\n" + "mc\n" + "md\n" + "me\n" + "mf\n" + "mg\n" + "mh\n" + "mi\n" + "mj\n" + "mk\n" + "ml\n" + "mm\n" + "mn\n" + "mo\n" + "mp\n" + "mq\n" + "mr\n" + "ms\n" + "mt\n" + "mu\n" + "mv\n" + "mw\n" + "mx\n" + "my\n" + "mz\n" + "na\n" + "nb\n" + "nc\n" + "nd\n" + "ne\n" + "nf\n" + "ng\n" + "nh\n" + "ni\n" + "nj\n" + "nk\n" + "nl\n" + "nm\n" + "nn\n" + "no\n" + "np\n" + "nq\n" + "nr\n" + "ns\n" + "nt\n" + "nu\n" + "nv\n" + "nw\n" + "nx\n" + "ny\n" + "nz\n" + "oa\n" + "ob\n" + "oc\n" + "od\n" + "oe\n" + "of\n" + "og\n" + "oh\n" + "oi\n" + "oj\n" + "ok\n" + "ol\n" + "om\n" + "on\n" + "oo\n" + "op\n" + "oq\n" + "or\n" + "os\n" + "ot\n" + "ou\n" + "ov\n" + "ow\n" + "ox\n" + "oy\n" + "oz\n" + "pa\n" + "pb\n" + "pc\n" + "pd\n" + "pe\n" + "pf\n" + "pg\n" + "ph\n" + "pi\n" + "pj\n" + "pk\n" + "pl\n" + "pm\n" + "pn\n" + "po\n" + "pp\n" + "pq\n" + "pr\n" + "ps\n" + "pt\n" + "pu\n" + "pv\n" + "pw\n" + "px\n" + "py\n" + "pz\n" + "qa\n" + "qb\n" + "qc\n" + "qd\n" + "qe\n" + "qf\n" + "qg\n" + "qh\n" + "qi\n" + "qj\n" + "qk\n" + "ql\n" + "qm\n" + "qn\n" + "qo\n" + "qp\n" + "qq\n" + "qr\n" + "qs\n" + "qt\n" + "qu\n" + "qv\n" + "qw\n" + "qx\n" + "qy\n" + "qz\n" + "ra\n" + "rb\n" + "rc\n" + "rd\n" + "re\n" + "rf\n" + "rg\n" + "rh\n" + "ri\n" + "rj\n" + "rk\n" + "rl\n" + "rm\n" + "rn\n" + "ro\n" + "rp\n" + "rq\n" + "rr\n" + "rs\n" + "rt\n" + "ru\n" + "rv\n" + "rw\n" + "rx\n" + "ry\n" + "rz\n" + "sa\n" + "sb\n" + "sc\n" + "sd\n" + "se\n" + "sf\n" + "sg\n" + "sh\n" + "si\n" + "sj\n" + "sk\n" + "sl\n" + "sm\n" + "sn\n" + "so\n" + "sp\n" + "sq\n" + "sr\n" + "ss\n" + "st\n" + "su\n" + "sv\n" + "sw\n" + "sx\n" + "sy\n" + "sz\n" + "ta\n" + "tb\n" + "tc\n" + "td\n" + "te\n" + "tf\n" + "tg\n" + "th\n" + "ti\n" + "tj\n" + "tk\n" + "tl\n" + "tm\n" + "tn\n" + "to\n" + "tp\n" + "tq\n" + "tr\n" + "ts\n" + "tt\n" + "tu\n" + "tv\n" + "tw\n" + "tx\n" + "ty\n" + "tz\n" + "ua\n" + "ub\n" + "uc\n" + "ud\n" + "ue\n" + "uf\n" + "ug\n" + "uh\n" + "ui\n" + "uj\n" + "uk\n" + "ul\n" + "um\n" + "un\n" + "uo\n" + "up\n" + "uq\n" + "ur\n" + "us\n" + "ut\n" + "uu\n" + "uv\n" + "uw\n" + "ux\n" + "uy\n" + "uz\n" + "va\n" + "vb\n" + "vc\n" + "vd\n" + "ve\n" + "vf\n" + "vg\n" + "vh\n" + "vi\n" + "vj\n" + "vk\n" + "vl\n" + "vm\n" + "vn\n" + "vo\n" + "vp\n" + "vq\n" + "vr\n" + "vs\n" + "vt\n" + "vu\n" + "vv\n" + "vw\n" + "vx\n" + "vy\n" + "vz\n" + "wa\n" + "wb\n" + "wc\n" + "wd\n" + "we\n" + "wf\n" + "wg\n" + "wh\n" + "wi\n" + "wj\n" + "wk\n" + "wl\n" + "wm\n" + "wn\n" + "wo\n" + "wp\n" + "wq\n" + "wr\n" + "ws\n" + "wt\n" + "wu\n" + "wv\n" + "ww\n" + "wx\n" + "wy\n" + "wz\n" + "xa\n" + "xb\n" + "xc\n" + "xd\n" + "xe\n" + "xf\n" + "xg\n" + "xh\n" + "xi\n" + "xj\n" + "xk\n" + "xl\n" + "xm\n" + "xn\n" + "xo\n" + "xp\n" + "xq\n" + "xr\n" + "xs\n" + "xt\n" + "xu\n" + "xv\n" + "xw\n" + "xx\n" + "xy\n" + "xz\n" + "ya\n" + "yb\n" + "yc\n" + "yd\n" + "ye\n" + "yf\n" + "yg\n" + "yh\n" + "yi\n" + "yj\n" + "yk\n" + "yl\n" + "ym\n" + "yn\n" + "yo\n" + "yp\n" + "yq\n" + "yr\n" + "ys\n" + "yt\n" + "yu\n" + "yv\n" + "yw\n" + "yx\n" + "yy\n" + "yz\n" + "za\n" + "zb\n" + "zc\n" + "zd\n" + "ze\n" + "zf\n" + "zg\n" + "zh\n" + "zi\n" + "zj\n" + "zk\n" + "zl\n" + "zm\n" + "zn\n" + "zo\n" + "zp\n" + "zq\n" + "zr\n" + "zs\n" + "zt\n" + "zu\n" + "zv\n" + "zw\n" + "zx\n" + "zy\n" + "zz"; final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); 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