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
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
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 = "^(([\\+\\-NnSs])?([0-8]?\\d|90)[°˚º^~*\\s\\-_]+([0-5]?\\d|\\d)['′\\s\\-_]+([0-5]?\\d|\\d)([.]\\d*)?[\"¨˝\\s\\-_]*([\\+\\-NnSs])?)([\\s\\-_:|,;\\/\\\\]+)(([\\+\\-EeWw])?([0]?\\d?\\d|1[0-7]\\d|180)[°˚º^~*\\s\\-_]+([0-5]\\d|\\d)['′\\s\\-_]+([0-5]?\\d|\\d)([.]\\d*)?[\"¨˝\\s_]*([\\+\\-EeWw])?)[\\s]*$"; final String string = "+0 0 0 0 0 0\n" + "0 0 0+ 0 0 0\n" + "0 0 0 +0 0 0\n" + "0 0 0 0 0 0+\n" + "-0 0 0 0 0 0\n" + "0 0 0- 0 0 0\n" + "0 0 0 -0 0 0\n" + "0 0 0 0 0 0-\n" + "+0 0 0 +0 0 0\n" + "0 0 0+ 0 0 0+\n" + "0 0 0+ 0 0 0\n" + "0 0 0 0 0 0+\n\n" + "// check divider\n" + "0 0 0 0 0 0\n" + "0 0 0 0 0 0\n" + "0 0 0|0 0 0\n" + "0 0 0:0 0 0\n" + "0 0 0,0 0 0\n" + "0 0 0;0 0 0\n" + "0 0 0 | 0 0 0\n" + "0 0 0 , 0 0 0\n" + "0 0 0 - 0 0 0\n" + "0 0 0 : 0 0 0\n" + "0 0 0 ; 0 0 0\n" + "0 0 0 ;; 0 0 0\n" + "0 0 0 || 0 0 0\n" + "0 0 0 \\ 0 0 0\n" + "0 0 0 / 0 0 0\n" + "0 0 0N 0 0 0\n" + "0 0 0n 0 0 0\n" + "0 0 0S 0 0 0\n" + "0 0 0s 0 0 0\n" + "0 0 0N 0 0 0W\n" + "0 0 0n 0 0 0w\n" + "0 0 0S 0 0 0e\n" + "0 0 0s 0 0 0E\n" + "0 0 0 0 0 0W\n" + "0 0 0 0 0 0w\n" + "0 0 0 0 0 0e\n" + "0 0 0 0 0 0E\n\n" + "//check + and - signs\n\n" + "+0 0 0 0 0 0\n" + "0 0 0+ 0 0 0\n" + "0 0 0 +0 0 0\n" + "0 0 0 0 0 0+\n" + "-0 0 0 0 0 0\n" + "0 0 0- 0 0 0\n" + "0 0 0 -0 0 0\n" + "0 0 0 0 0 0-\n" + "+0 0 0 +0 0 0\n" + "0 0 0+ 0 0 0+\n" + "0 0 0+ 0 0 0\n" + "0 0 0 0 0 0+\n\n" + "// check all zeros\n\n" + "00 00 00 N 000 00 00 E\n" + "00 00 00 N 000 00 0 E\n" + "00 00 00 N 000 0 00 E\n" + "00 00 00 N 000 0 0 E\n" + "00 00 00 N 00 00 00 E\n" + "00 00 00 N 00 00 0 E\n" + "00 00 00 N 00 0 0 E\n" + "00 00 00 N 0 00 00 E\n" + "00 00 00 N 0 0 00 E\n" + "00 00 00 N 0 0 0 E\n\n" + "00 00 0 N 000 00 00 E\n" + "00 00 0 N 000 00 0 E\n" + "00 00 0 N 000 0 00 E\n" + "00 00 0 N 000 0 0 E\n" + "00 00 0 N 00 00 00 E\n" + "00 00 0 N 00 00 0 E\n" + "00 00 0 N 00 0 0 E\n" + "00 00 0 N 0 00 00 E\n" + "00 00 0 N 0 0 00 E\n" + "00 00 0 N 0 0 0 E \n\n" + "00 0 00 N 000 00 00 E\n" + "00 0 00 N 000 00 0 E\n" + "00 0 00 N 000 0 00 E\n" + "00 0 00 N 000 0 0 E\n" + "00 0 00 N 00 00 00 E\n" + "00 0 00 N 00 00 0 E\n" + "00 0 00 N 00 0 0 E\n" + "00 0 00 N 0 00 00 E\n" + "00 0 00 N 0 0 00 E\n" + "00 0 00 N 0 0 0 E\n\n" + "0 00 00 N 000 00 00 E\n" + "0 00 00 N 000 00 0 E\n" + "0 00 00 N 000 0 00 E\n" + "0 00 00 N 000 0 0 E\n" + "0 00 00 N 00 00 00 E\n" + "0 00 00 N 00 00 0 E\n" + "0 00 00 N 00 0 0 E\n" + "0 00 00 N 0 00 00 E\n" + "0 00 00 N 0 0 00 E\n" + "0 00 00 N 0 0 0 E\n\n" + "0 00 0 N 000 00 00 E\n" + "0 00 0 N 000 00 0 E\n" + "0 00 0 N 000 0 00 E\n" + "0 00 0 N 000 0 0 E\n" + "0 00 0 N 00 00 00 E\n" + "0 00 0 N 00 00 0 E\n" + "0 00 0 N 00 0 0 E\n" + "0 00 0 N 0 00 00 E\n" + "0 00 0 N 0 0 00 E\n" + "0 00 0 N 0 0 0 E \n\n" + "0 0 00 N 000 00 00 E\n" + "0 0 00 N 000 00 0 E\n" + "0 0 00 N 000 0 00 E\n" + "0 0 00 N 000 0 0 E\n" + "0 0 00 N 00 00 00 E\n" + "0 0 00 N 00 00 0 E\n" + "0 0 00 N 00 0 0 E\n" + "0 0 00 N 0 00 00 E\n" + "0 0 00 N 0 0 00 E\n" + "0 0 00 N 0 0 0 E\n\n" + "//invalid\n\n" + "0 0 0 N 000 00 E\n" + "0 0 0 N 000 E\n" + "0 0 N 0 0 00 E\n" + "0 N 0 0 0E \n\n" + "// check valid latitude deg vaules\n\n" + "01 00 00 N 000 0 0 E\n" + "1 00 00 N 000 0 0 E\n" + "09 00 00 N 000 0 0 E\n" + "9 00 00 N 000 0 0 E\n" + "89 00 00 N 000 0 0 E\n" + "90 00 01 N 000 0 0 E\n\n" + "+00 00 00 N 000 0 0 E\n" + "+0 00 00 N 000 0 0 E\n" + "+01 00 00 N 000 0 0 E\n" + "+1 00 00 N 000 0 0 E\n" + "+09 00 00 N 000 0 0 E\n" + "+9 00 00 N 000 0 0 E\n" + "+89 00 00 N 000 0 0 E\n" + "+90 00 01 N 000 0 0 E\n\n" + "-00 00 00 N 000 0 0 E\n" + "-0 00 00 N 000 0 0 E\n" + "-01 00 00 N 000 0 0 E\n" + "-1 00 00 N 000 0 0 E\n" + "-09 00 00 N 000 0 0 E\n" + "-9 00 00 N 000 0 0 E\n" + "-89 00 00 N 000 0 0 E\n" + "-90 00 01 N 000 0 0 E\n\n" + "00 00 00 000 0 0\n" + "+0 00 00 000 0 0\n" + "+01 00 00 000 0 0\n" + "+1 00 00 000 0 0\n" + "+09 00 00 000 0 0\n" + "+9 00 00 000 0 0\n" + "+89 00 00 000 0 0\n" + "+90 00 01 000 0 0\n\n" + "//invalid\n" + "91 00 01 N 000 0 0 E\n" + "000 00 01 N 000 0 0 E\n" + "089 00 01 N 000 0 0 E\n\n" + "// check valid latitude minute vaules\n\n" + "00 01 00 N 000 0 0 E\n" + "00 1 00 N 000 0 0 E\n\n" + "00 09 00 N 000 0 0 E\n" + "00 9 00 N 000 0 0 E\n\n" + "00 59 00 N 000 0 0 E\n\n" + "//invalid\n\n" + "00 60 00 N 000 0 0 E\n" + "00 59.55 00 N 000 0 0 E\n\n" + "// check valid latitude second vaules\n\n" + "00 00 01 N 000 0 0 E\n" + "00 00 1 N 000 0 0 E\n\n" + "00 00 09 N 000 0 0 E\n" + "00 00 9 N 000 0 0 E\n\n" + "00 00 59 N 000 0 0 E\n\n" + "00 00 01.001 N 000 0 0 E\n" + "00 00 1.001 N 000 0 0 E\n\n" + "00 00 09.001 N 000 0 0 E\n" + "00 00 9.001 N 000 0 0 E\n\n" + "00 00 59.001 N 000 0 0 E\n\n" + "//invalid\n\n" + "00 00 60 N 000 0 0 E\n" + "00 00 60.999 N 000 0 0 E\n\n" + "//check valid longitute degree values\n\n" + "00 00 0 N 001 0 0 E\n" + "00 00 0 N 01 0 0 E\n" + "00 00 0 N 1 0 0 E\n" + "00 00 0 N 10 0 0 E\n" + "00 00 0 N 99 0 0 E\n" + "00 00 0 N 100 0 0 E\n" + "00 00 0 N 179 0 0 E\n" + "00 00 0 N 79 0 0 E\n" + "00 00 0 N 180 0 0 E\n\n" + "00 00 0 N 001° 0 0 E\n" + "00 00 0 N 01° 0 0 E\n" + "00 00 0 N 1° 0 0 E\n" + "00 00 0 N 10° 0 0 E\n" + "00 00 0 N 99° 0 0 E\n" + "00 00 0 N 100° 0 0 E\n" + "00 00 0 N 179° 0 0 E\n" + "00 00 0 N 79° 0 0 E\n" + "00 00 0 N 180° 0 0 E\n\n" + "00 00 0 N 001˚ 0 0 E\n" + "00 00 0 N 01˚ 0 0 E\n" + "00 00 0 N 1˚ 0 0 E\n" + "00 00 0 N 10˚ 0 0 E\n" + "00 00 0 N 99˚ 0 0 E\n" + "00 00 0 N 100˚ 0 0 E\n" + "00 00 0 N 179˚ 0 0 E\n" + "00 00 0 N 79˚ 0 0 E\n" + "00 00 0 N 180˚ 0 0 E\n\n" + "00 00 0 N 001º 0 0 E\n" + "00 00 0 N 01º 0 0 E\n" + "00 00 0 N 1º 0 0 E\n" + "00 00 0 N 10º 0 0 E\n" + "00 00 0 N 99º 0 0 E\n" + "00 00 0 N 100º 0 0 E\n" + "00 00 0 N 179º 0 0 E\n" + "00 00 0 N 79º 0 0 E\n" + "00 00 0 N 180º 0 0 E\n\n" + "00 00 0 N 001^ 0 0 E\n" + "00 00 0 N 01^ 0 0 E\n" + "00 00 0 N 1^ 0 0 E\n" + "00 00 0 N 10^ 0 0 E\n" + "00 00 0 N 99^ 0 0 E\n" + "00 00 0 N 100^ 0 0 E\n" + "00 00 0 N 179^ 0 0 E\n" + "00 00 0 N 79^ 0 0 E\n" + "00 00 0 N 180^ 0 0 E\n\n" + "00 00 0 N 001~ 0 0 E\n" + "00 00 0 N 01~ 0 0 E\n" + "00 00 0 N 1~ 0 0 E\n" + "00 00 0 N 10~ 0 0 E\n" + "00 00 0 N 99~ 0 0 E\n" + "00 00 0 N 100~ 0 0 E\n" + "00 00 0 N 179~ 0 0 E\n" + "00 00 0 N 79~ 0 0 E\n" + "00 00 0 N 180~ 0 0 E\n\n" + "00 00 0 N 001* 0 0 E\n" + "00 00 0 N 01* 0 0 E\n" + "00 00 0 N 1* 0 0 E\n" + "00 00 0 N 10* 0 0 E\n" + "00 00 0 N 99* 0 0 E\n" + "00 00 0 N 100* 0 0 E\n" + "00 00 0 N 179* 0 0 E\n" + "00 00 0 N 79* 0 0 E\n" + "00 00 0 N 180* 0 0 E\n\n\n" + "//invalid\n\n" + "00 00 0 N 181 0 0 E\n" + "00 00 0 N 1111 0 0 E\n" + "00 00 0 N 181° 0 0 E\n" + "00 00 0 N 1111° 0 0 E\n" + "00 00 0 N 181˚ 0 0 E\n" + "00 00 0 N 1111˚ 0 0 E\n" + "00 00 0 N 181º 0 0 E\n" + "00 00 0 N 1111º 0 0 E\n" + "00 00 0 N 181^ 0 0 E\n" + "00 00 0 N 1111^ 0 0 E\n" + "00 00 0 N 181~ 0 0 E\n" + "00 00 0 N 1111~ 0 0 E\n" + "00 00 0 N 181* 0 0 E\n" + "00 00 0 N 1111* 0 0 E\n\n" + "//check valid longitute minute values\n\n" + "00 00 0 N 000 01 0 E\n" + "00 00 0 N 000 1 0 E\n" + "00 00 0 N 000 9 0 E\n" + "00 00 0 N 000 09 0 E\n" + "00 00 0 N 000 10 0 E\n" + "00 00 0 N 000 59 0 E\n" + "00 00 0 N 000 5 0 E\n\n" + "00 00 0 N 000 01' 0 E\n" + "00 00 0 N 000 1' 0 E\n" + "00 00 0 N 000 9' 0 E\n" + "00 00 0 N 000 09' 0 E\n" + "00 00 0 N 000 10' 0 E\n" + "00 00 0 N 000 59' 0 E\n" + "00 00 0 N 000 5' 0 E\n\n\n" + "00 00 0 N 000 01′ 0 E\n" + "00 00 0 N 000 1′ 0 E\n" + "00 00 0 N 000 9′ 0 E\n" + "00 00 0 N 000 09′ 0 E\n" + "00 00 0 N 000 10′ 0 E\n" + "00 00 0 N 000 59′ 0 E\n" + "00 00 0 N 000 5′ 0 E\n\n" + "//invalid\n\n" + "00 00 0 N 000 60 0 E\n" + "00 00 0 N 000 61 0 E\n" + "00 00 0 N 000 60' 0 E\n" + "00 00 0 N 000 61' 0 E\n" + "00 00 0 N 000 60′ 0 E\n" + "00 00 0 N 000 61′ 0 E\n\n" + "// check degree symbols\n\n" + "0° 0' 0\" 0° 0' 0\"\n" + "0° 0' 0\" 0˚ 0' 0\"\n" + "0° 0' 0\" 0º 0' 0\"\n" + "0° 0' 0\" 0^ 0' 0\"\n" + "0° 0' 0\" 0~ 0' 0\"\n" + "0° 0' 0\" 0* 0' 0\"\n\n" + "0˚ 0' 0\" 0° 0' 0\"\n" + "0˚ 0' 0\" 0˚ 0' 0\"\n" + "0˚ 0' 0\" 0º 0' 0\"\n" + "0˚ 0' 0\" 0^ 0' 0\"\n" + "0˚ 0' 0\" 0~ 0' 0\"\n" + "0˚ 0' 0\" 0* 0' 0\"\n\n" + "0º 0' 0\" 0° 0' 0\"\n" + "0º 0' 0\" 0˚ 0' 0\"\n" + "0º 0' 0\" 0º 0' 0\"\n" + "0º 0' 0\" 0^ 0' 0\"\n" + "0º 0' 0\" 0~ 0' 0\"\n" + "0º 0' 0\" 0* 0' 0\"\n\n" + "0^ 0' 0\" 0° 0' 0\"\n" + "0^ 0' 0\" 0˚ 0' 0\"\n" + "0^ 0' 0\" 0º 0' 0\"\n" + "0^ 0' 0\" 0^ 0' 0\"\n" + "0^ 0' 0\" 0~ 0' 0\"\n" + "0^ 0' 0\" 0* 0' 0\"\n\n" + "0~ 0' 0\" 0° 0' 0\"\n" + "0~ 0' 0\" 0˚ 0' 0\"\n" + "0~ 0' 0\" 0º 0' 0\"\n" + "0~ 0' 0\" 0^ 0' 0\"\n" + "0~ 0' 0\" 0~ 0' 0\"\n" + "0~ 0' 0\" 0* 0' 0\"\n\n" + "0* 0' 0\" 0° 0' 0\"\n" + "0* 0' 0\" 0˚ 0' 0\"\n" + "0* 0' 0\" 0º 0' 0\"\n" + "0* 0' 0\" 0^ 0' 0\"\n" + "0* 0' 0\" 0~ 0' 0\"\n" + "0* 0' 0\" 0* 0' 0\"\n\n" + "//check minute symbols\n\n" + "0° 00' 00 000° 00' 00\"\n" + "0° 00' 00 000° 00' 00\"\n" + "0° 00' 00\" 000° 00' 00 \n" + "0° 00' 00\" 000° 00' 00\"\n\n" + "0° 00′ 00 000° 00′ 00\"\n" + "0° 00′ 00 000° 00′ 00\"\n" + "0° 00′ 00\" 000° 00′ 00 \n" + "0° 00′ 00\" 000° 00′ 00\"\n\n" + "0° 00' 00 000° 00′ 00\"\n" + "0° 00' 00 000° 00′ 00\"\n" + "0° 00' 00\" 000° 00′ 00 \n" + "0° 00' 00\" 000° 00′ 00\"\n\n" + "0° 00′ 00 000° 00' 00\"\n" + "0° 00′ 00 000° 00' 00\"\n" + "0° 00′ 00\" 000° 00' 00 \n" + "0° 00′ 00\" 000° 00' 00\"\n\n" + "//check second symbols\n\n" + "0° 00' 00\" N 000° 00' 00\"\n" + "0° 00' 00.666\" N 000° 00' 00\" E\n" + "0° 00' 00\" N 000° 00' 00.000\" E\n" + "0° 00' 00\" N 000° 00' 00\"\n\n" + "0° 00' 00¨ N 000° 00' 00¨ E\n" + "0° 00' 00.666¨ N 000° 00' 00¨\n" + "0° 00' 00¨ N 000° 00' 00.000¨ E\n" + "0° 00' 00¨ N 000° 00' 00¨ E\n\n" + "0° 00' 00˝ N 000° 00' 00˝ E\n" + "0° 00' 00.666˝ N 000° 00' 00˝\n" + "0° 00' 00˝ N 000° 00' 00.000˝ E\n" + "0° 00' 00˝ N 000° 00' 00˝ E\n\n" + "//check full dms with differing spaces\n\n" + "0°00'00˝N 000°00'00˝E\n" + "0 °00'00˝N 000°00'00˝E\n" + "0 ° 00 '00˝N 000°00'00˝E\n" + "0 ° 00 '00 ˝N 000°00'00˝E\n" + "0 ° 00 '00˝ N 000°00'00˝E\n" + "0 ° 00 '00˝ N 000 ° 00'00˝E\n" + "0 ° 00 '00˝ N 000 ° 00 '00˝E\n" + "0 ° 00 '00˝ N 000 ° 00 ' 00˝E\n" + "0 ° 00 '00˝ N 000 ° 00 ' 00 ˝E\n" + "0 ° 00 '00˝ N 000 ° 00 ' 00 ˝ E\n\n" + "//check full dms prefix / suffix\n\n" + "0° 00' 00˝N 000° 00'00˝E\n" + "0° 00' 00˝N 000° 00'00˝\n" + "0° 00' 00˝ 000° 00'00˝E\n" + "N0° 00' 00˝ E000° 00'00˝\n" + "N0° 00' 00˝ 000° 00'00˝E\n" + "0° 00' 00˝ E000° 00'00˝\n" + "N0° 00' 00˝N 000° 00'00˝\n" + "0° 00' 00˝ E000° 00'00˝E\n\n" + "0° 00' 00˝S 000° 00'00˝E\n" + "0° 00' 00˝S 000° 00'00˝\n" + "0° 00' 00˝ 000° 00'00˝E\n" + "S0° 00' 00˝ E000° 00'00˝\n" + "S0° 00' 00˝ 000° 00'00˝E\n" + "0° 00' 00˝ E000° 00'00˝\n" + "S0° 00' 00˝S 000° 00'00˝\n" + "0° 00' 00˝ E000° 00'00˝E\n\n" + "0° 00' 00˝N 000° 00'00˝W\n" + "0° 00' 00˝N 000° 00'00˝\n" + "0° 00' 00˝ 000° 00'00˝W\n" + "N0° 00' 00˝ W000° 00'00˝\n" + "N0° 00' 00˝ 000° 00'00˝W\n" + "0° 00' 00˝ W000° 00'00˝\n" + "N0° 00' 00˝N 000° 00'00˝\n" + "0° 00' 00˝ W000° 00'00˝W\n\n\n" + "0° 00' 00˝S 000° 00'00˝W\n" + "0° 00' 00˝S 000° 00'00˝\n" + "0° 00' 00˝ 000° 00'00˝W\n" + "S0° 00' 00˝ W000° 00'00˝\n" + "S0° 00' 00˝ 000° 00'00˝W\n" + "0° 00' 00˝ W000° 00'00˝\n" + "S0° 00' 00˝S 000° 00'00˝\n" + "0° 00' 00˝ E000° 00'00˝W\n\n" + "//invalid\n\n" + "0° 00' 00˝E 000° 00'00˝E\n" + "0° 00' 00˝E 000° 00'00˝W\n" + "0° 00' 00˝W 000° 00'00˝W\n" + "0° 00' 00˝N 000° 00'00˝S\n" + "0° 00' 00˝N 000° 00'00˝N\n" + "0° 00' 00˝S 000° 00'00˝S\n" + "0° 00' 00˝W 000° 00'00˝S\n" + "0° 00' 00˝W 000° 00'00˝N\n" + "0° 00' 00˝E 000° 00'00˝S\n" + "0° 00' 00˝E 000° 00'00˝N\n"; 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