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
/
(https:\/\/provider\.sharespaceapp\.swisscom\.com((?!:(443|80)(($)|(\/))))(?:(?:(?::)(\d*)))?(?:(?:(\/latest)(?=\/))|(?:(\/latest)($)))?)
/
g
1st Capturing Group
(https:\/\/provider\.sharespaceapp\.swisscom\.com((?!:(443|80)(($)|(\/))))(?:(?:(?::)(\d*)))?(?:(?:(\/latest)(?=\/))|(?:(\/latest)($)))?)
https:
matches the characters https: literally (case sensitive)
\/ matches the character / with index 4710 (2F16 or 578) literally (case sensitive)
\/ matches the character / with index 4710 (2F16 or 578) literally (case sensitive)
provider
matches the characters provider literally (case sensitive)
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
sharespaceapp
matches the characters sharespaceapp literally (case sensitive)
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
swisscom
matches the characters swisscom literally (case sensitive)
\. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
com
matches the characters com literally (case sensitive)
2nd Capturing Group
((?!:(443|80)(($)|(\/))))
Negative Lookahead
(?!:(443|80)(($)|(\/)))
Assert that the Regex below does not match
: matches the character : with index 5810 (3A16 or 728) literally (case sensitive)
3rd Capturing Group
(443|80)
1st Alternative
443
443
matches the characters 443 literally (case sensitive)
2nd Alternative
80
80
matches the characters 80 literally (case sensitive)
4th Capturing Group
(($)|(\/))
1st Alternative
($)
5th Capturing Group
($)
$ asserts position at the end of the string
2nd Alternative
(\/)
6th Capturing Group
(\/)
\/ matches the character / with index 4710 (2F16 or 578) literally (case sensitive)
Non-capturing group
(?:(?:(?::)(\d*)))?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
Non-capturing group
(?:(?::)(\d*))
Non-capturing group
(?::)
: matches the character : with index 5810 (3A16 or 728) literally (case sensitive)
7th Capturing Group
(\d*)
\d
matches a digit (equivalent to [0-9])
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
Non-capturing group
(?:(?:(\/latest)(?=\/))|(?:(\/latest)($)))?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
1st Alternative
(?:(\/latest)(?=\/))
Non-capturing group
(?:(\/latest)(?=\/))
8th Capturing Group
(\/latest)
\/ matches the character / with index 4710 (2F16 or 578) literally (case sensitive)
latest
matches the characters latest literally (case sensitive)
Positive Lookahead
(?=\/)
Assert that the Regex below matches
\/ matches the character / with index 4710 (2F16 or 578) literally (case sensitive)
2nd Alternative
(?:(\/latest)($))
Non-capturing group
(?:(\/latest)($))
9th Capturing Group
(\/latest)
\/ matches the character / with index 4710 (2F16 or 578) literally (case sensitive)
latest
matches the characters latest literally (case sensitive)
10th Capturing Group
($)
$ asserts position at the end of the string
Global pattern flags
g modifier: global. All matches (don't return after first match)
Your regular expression does not match the subject string.

Regular Expression
No Match

/
/
g

Test String