Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8

Function

  • Match
  • Substitution
  • List
  • Unit Tests
/
^(?<project>\w+)-(?<core>\d+\.x)-(?<major>\d+)\.(?<patch>[\dx]+)[-\.]?(?<extra>[^\.]+)?\.(tar\.gz|tgz)$
/
mg
^ asserts position at start of a line
Named Capture Group project
(?<project>\w+)
\w
matches any word character (equivalent to [a-zA-Z0-9_])
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
- matches the character - with index 4510 (2D16 or 558) literally (case sensitive)
Named Capture Group core
(?<core>\d+\.x)
\d
matches a digit (equivalent to [0-9])
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
x matches the character x with index 12010 (7816 or 1708) literally (case sensitive)
- matches the character - with index 4510 (2D16 or 558) literally (case sensitive)
Named Capture Group major
(?<major>\d+)
\d
matches a digit (equivalent to [0-9])
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
Named Capture Group patch
(?<patch>[\dx]+)
Match a single character present in the list below
[\dx]
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
\d matches a digit (equivalent to [0-9])
x matches the character x with index 12010 (7816 or 1708) literally (case sensitive)
Match a single character present in the list below
[-\.]
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
- matches the character - with index 4510 (2D16 or 558) literally (case sensitive)
This hyphen is treated literally, which might be confusing for others. Consider escaping it or placing at the start or end of the class!
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
Named Capture Group extra
(?<extra>[^\.]+)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
Match a single character not present in the list below
[^\.]
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
6th Capturing Group
(tar\.gz|tgz)
1st Alternative
tar\.gz
tar
matches the characters tar literally (case sensitive)
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
gz
matches the characters gz literally (case sensitive)
2nd Alternative
tgz
tgz
matches the characters tgz literally (case sensitive)
$ asserts position at the end of a line
matches the character with index 1010 (A16 or 128) literally (case sensitive)
Global pattern flags
m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
g modifier: global. All matches (don't return after first match)
Your regular expression does not match the subject string.Try launching the debugger to find out why.

Regular Expression
No Match

/
/
mg

Test String