use Modern::Perl;
use YAPE::Regex::Explain;
my $regex = 'outlook\s+for\s+any\s+rating|(?:rating|if\s+on\s+negative
+|Microsoft|suggesting\s+an|may\s+contain\s+statements\s+about\s+futur
+e\s+events\,|business\s+conditions\s+and\s+the)\s+outlook|guidance\s+
+(?:to\s+approve|facility)
|(?:authoritative|revenue\s+recognition|invaluable\s
++practical|valuable|regulatory|technical|under\s+the|staff\'s|judicia
+l|SEC|FDA|Treasury(?:\s+Department)?|specific|implementation|their|go
+vernment|any\s+ruling|college|absent|\s+his|interim|intrepretive|tran
+sition|administrative|procedural|related|applicable|accounting|defini
+tive|superceding|IRS|Internal\s+Revenue\s+Service|valued|EITF\s+accou
+nting)\s+guidance
|guidance\s+(?:and\s+rules|promulgated(?:\s+thereund
+er)?|in\s+SFAS)|(?:provided|issued)\s+by\s+(?:the\s+)?(?:SEC|Securiti
+es\s+and\s+Exchange\s+Commission|Internal\s+Revenue\s+Service|Secreta
+ry|United\s+States|Financial\s+Accounting)
|(?:other|applicable)\s+guidance\s+issued|according\
+s+to\s+the\s+guidance\s+contained|provide\s+guidance\s+to\s+directors
+|receiving\s+guidance
|(?:current|other)\s+guidance\s+(?:under|from)|assum
+es\s+guidance\s+of\s+(?:the|a)\s+(?:company|board|talented\s+team|com
+pensation)|guidance\s+(?:system|software|technology)';
say YAPE::Regex::Explain->new($regex)->explain;
Partial output:
...
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
outlook 'outlook'
----------------------------------------------------------------------
\s+ whitespace (\n, \r, \t, \f, and " ") (1 or
more times (matching the most amount
possible))
----------------------------------------------------------------------
for 'for'
----------------------------------------------------------------------
\s+ whitespace (\n, \r, \t, \f, and " ") (1 or
more times (matching the most amount
possible))
----------------------------------------------------------------------
any 'any'
----------------------------------------------------------------------
\s+ whitespace (\n, \r, \t, \f, and " ") (1 or
more times (matching the most amount
possible))
----------------------------------------------------------------------
rating 'rating'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
(?: group, but do not capture:
----------------------------------------------------------------------
rating 'rating'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
if 'if'
----------------------------------------------------------------------
\s+ whitespace (\n, \r, \t, \f, and " ") (1
or more times (matching the most amount
possible))
----------------------------------------------------------------------
...
|