<ulthe literal text <ul (case sensitive) Negated Character Class[^>]* *matches any number of characters outside the set below:
>the literal > (6210 / 768 / 3E16)
>the literal > (6210 / 768 / 3E16)
\s*any whitespace character, repeated any number of times
Non-Capturing Group(?:<li[^>]*>(?:[^<]+<[^li])+li>\s*)+ +repeats the group contents below at least once:
<lithe literal text <li (case sensitive) Negated Character Class[^>]* *matches any number of characters outside the set below:
>the literal > (6210 / 768 / 3E16)
>the literal > (6210 / 768 / 3E16)
Non-Capturing Group(?:[^<]+<[^li])+ +repeats the group contents below at least once:
Negated Character Class[^<]+ +matches at least one character outside the set below:
<the literal < (6010 / 748 / 3C16)
<the literal < (6010 / 748 / 3C16)
Negated Character Class[^li] lthe literal l (10810 / 1548 / 6C16) (case sensitive)
ithe literal i (10510 / 1518 / 6916) (case sensitive)
li>the literal text li> (case sensitive) \s*any whitespace character, repeated any number of times
<the literal < (6010 / 748 / 3C16)
\/the literal / (4710 / 578 / 2F16)
ul>the literal text ul> (case sensitive) 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