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
/
^Soldto:(?:.*\R){2}\K((?:(?!\s{2}).)+)\K\s*\K((?:(?!\s{2}).)+)
/
m
^ asserts position at start of a line
Soldto:
matches the characters Soldto: literally (case sensitive)
Non-capturing group
(?:.*\R){2}
{2} matches the previous token exactly 2 times
.
matches any character (except for line terminators)
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
\R matches any Unicode newline sequence
\K resets the starting point of the reported match. Any previously consumed characters are no longer included in the final match
1st Capturing Group
((?:(?!\s{2}).)+)
Non-capturing group
(?:(?!\s{2}).)+
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
Negative Lookahead
(?!\s{2})
Assert that the Regex below does not match
\s
matches any whitespace character (equivalent to [\r\n\t\f\v ])
{2} matches the previous token exactly 2 times
. matches any character (except for line terminators)
\K resets the starting point of the reported match. Any previously consumed characters are no longer included in the final match
\s
matches any whitespace character (equivalent to [\r\n\t\f\v ])
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
\K resets the starting point of the reported match. Any previously consumed characters are no longer included in the final match
2nd Capturing Group
((?:(?!\s{2}).)+)
Non-capturing group
(?:(?!\s{2}).)+
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
Negative Lookahead
(?!\s{2})
Assert that the Regex below does not match
\s
matches any whitespace character (equivalent to [\r\n\t\f\v ])
{2} matches the previous token exactly 2 times
. matches any character (except for line terminators)
Global pattern flags
m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
Your regular expression does not match the subject string.Try launching the debugger to find out why.

Regular Expression
No Match

/
/
m

Test String