QuickExpr =/^ (? : [^ <] * (<[\ W \ W] +>) [^>] * $ | # ([\ w \-] +) $ )/
(? :...) Indicates a non-capturing type.
[^ <] Indicates that it starts with "<" and contains 0 or more '<' parentheses
(<[\ W \ W] +>) indicates a capture type. It starts with '<>' and contains one or more characters.
$ Indicates the end of a character.
(# ([\ W \-] +) indicates a capture type, which is composed of '#' and string, number, _, and -.
Rnotwhite =/\ S/
\ S indicates a symbol other than a blank character
TrimLeft =/^ \ s +/trimRight =/\ s + $/
Left and right sides. S is a blank character. ^ The prefix indicates the start of the string, and the $ suffix indicates the end of the string.
Rdigit =/\ d/
Indicates a number.
RsingleTag =/^ <(\ w +) \ s * \/?> (? : <\/\ 1> )? $/
^ <(\ W +) \ s * \/?>
Start with '<', contains one to multiple characters, and ends with 0 to multiple white spaces, 0 or '/' and '>,
(? : <\/\ 1> )? $
Indicates that the end of the first capture type exists or does not exist.