^start of line
\%the literal % (3710 / 458 / 2516)
Group customer(?<customer>[A-Z][a-z]+) A-Zone character from A (6510) to Z (9010) (case sensitive)
+matches at least one character from the set below:
a-zone character from a (9710) to z (12210) (case sensitive)
\%the literal % (3710 / 458 / 2516)
Negated Character Class[^|$%.]*? *?matches any number of characters outside the set below:
|the literal | (12410 / 1748 / 7C16)
$the literal $ (3610 / 448 / 2416)
%the literal % (3710 / 458 / 2516)
.the literal . (4610 / 568 / 2E16)
<the literal < (6010 / 748 / 3C16)
Group product(?<product>\w+) \w+any word character, repeated at least once
>the literal > (6210 / 768 / 3E16)
Negated Character Class[^|$%.]*? *?matches any number of characters outside the set below:
|the literal | (12410 / 1748 / 7C16)
$the literal $ (3610 / 448 / 2416)
%the literal % (3710 / 458 / 2516)
.the literal . (4610 / 568 / 2E16)
\|the literal | (12410 / 1748 / 7C16)
\d+a digit, repeated at least once
\|the literal | (12410 / 1748 / 7C16)
Negated Character Class[^|$%.]*? *?matches any number of characters outside the set below:
|the literal | (12410 / 1748 / 7C16)
$the literal $ (3610 / 448 / 2416)
%the literal % (3710 / 458 / 2516)
.the literal . (4610 / 568 / 2E16)
Group price(?<price>\d+\.?\d*) \d+a digit, repeated at least once
\.?optionally matches the literal . (4610 / 568 / 2E16)
\d*a digit, repeated any number of times
\$the literal $ (3610 / 448 / 2416)
$end of line
g modifier: global. Finds all matches instead of stopping after the first
m modifier: multiline. Causes ^ and $ to match the start and end of each line, not only the start and end of the string