^start of line
\d+a digit, repeated at least once
0 obj the literal text 0 obj (case sensitive) \na line-feed (newline) character (ASCII 10)
Non-Capturing Group(?:(?!endobj $).*\n)*? *?repeats the group contents below any number of times:
Negative Lookahead(?!endobj $) endobj the literal text endobj (case sensitive) $end of line
.*any character (except for line terminators), repeated any number of times
\na line-feed (newline) character (ASCII 10)
\/the literal / (4710 / 578 / 2F16)
Name the literal text Name (case sensitive) \/the literal / (4710 / 578 / 2F16)
Paragraphthe literal text Paragraph (case sensitive) Non-Capturing Group(?:.*\n)*? *?repeats the group contents below any number of times:
.*any character (except for line terminators), repeated any number of times
\na line-feed (newline) character (ASCII 10)
endobjthe literal text endobj (case sensitive) ?optionally matches the literal (3210 / 408 / 2016)
$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