Also, I cannot figure out why the following (pulled directly from here <a href="https://www.d20pfsrd.com/bestiary/monster-listings/undead/vampire/" rel="nofollow">https://www.d20pfsrd.com/bestiary/monster-listings/undead/vampire/</a> ), doesn't parse the DR, Immunities, Resistances and Weaknesses correctly: Vampire7 CR 9 XP 6,400 Female human vampire sorcerer 8 CE Medium undead (augmented humanoid) Init +8; Senses darkvision 60 ft.; Perception +21 DEFENSE AC 23, touch 17, flat-footed 18 (+2 deflection, +4 Dex, +1 dodge, +6 natural) hp 102 (8d6+72); fast healing 5 Fort +13, Ref +11, Will +12 Defensive Abilities channel resistance +4; DR 10/magic and silver; Immune undead traits; Resist cold 10, electricity 10 Weaknesses vampire weaknesses It will capture the defensive abilities, but that's it. DR, Immunities, Resistances and Weaknesses remain blank. Admittedly, my Javascript is not the best, but this appears to be the line of code that would capture this: defenseMatch = / DEFENSE \n + (AC \s + [ ^ \n ] + ) \n + hp \s + ( [ ^ \n ] + ) \n + Fort \s + ( [ ^ ,;] + )(?:, | ;) \s + Ref \s + ( [ ^ ,;] + )(?:, | ;) \s + Will \s + ( [ ^ \n ] + ) \n * (?:Defensive \s + Abilities \s + ( [ ^ ; \n ] + )) ? (?:; | \n + | \s + ) ? (?:DR \s + ( [ ^ ; \n ] + );) ? (?: \s + ) ? (?:Immune \s ( [ ^ ; \n ] + )(?:;) ? ) ? (?: \s + ) ? (?:Resist \s + ( [ ^ ; \n ] + );) ? (?: \s + ) ? (?:SR \s + ( \d + )) ? (?: \n + ) ? (?:Weaknesses \s + ( [ ^ \n ] + )) ? / , It looks like it should work? What am I missing?