Regular Expressions 101

Save & Share

  • Save Regex
    ctrl+s
  • Update Regex
    ctrl+⇧+s

Flavor

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

Function

  • Match
  • Substitution
  • List
  • Unit Tests
/
^\[(([^ \[\]\t\r\n]+)( *([^ \[\]\t\r\n]+))*)\]$
/
gm
^ asserts position at start of a line
\[ matches the character [ with index 9110 (5B16 or 1338) literally (case sensitive)
1st Capturing Group
(([^ \[\]\t\r\n]+)( *([^ \[\]\t\r\n]+))*)
2nd Capturing Group
([^ \[\]\t\r\n]+)
Match a single character not present in the list below
[^ \[\]\t\r\n]
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
matches the character with index 3210 (2016 or 408) literally (case sensitive)
\[ matches the character [ with index 9110 (5B16 or 1338) literally (case sensitive)
\] matches the character ] with index 9310 (5D16 or 1358) literally (case sensitive)
\t matches a tab character (ASCII 9)
\r matches a carriage return (ASCII 13)
\n matches a line-feed (newline) character (ASCII 10)
3rd Capturing Group
( *([^ \[\]\t\r\n]+))*
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data
matches the character with index 3210 (2016 or 408) literally (case sensitive)
4th Capturing Group
([^ \[\]\t\r\n]+)
Match a single character not present in the list below
[^ \[\]\t\r\n]
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
matches the character with index 3210 (2016 or 408) literally (case sensitive)
\[ matches the character [ with index 9110 (5B16 or 1338) literally (case sensitive)
\] matches the character ] with index 9310 (5D16 or 1358) literally (case sensitive)
\t matches a tab character (ASCII 9)
\r matches a carriage return (ASCII 13)
\n matches a line-feed (newline) character (ASCII 10)
\] matches the character ] with index 9310 (5D16 or 1358) literally (case sensitive)
$ asserts position at the end of a line
Global pattern flags
g modifier: global. All matches (don't return after first match)
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.

Regular Expression
No Match

/
/
gm

Test String