Updated link to regex. Added new test cases on regex101.com.
Cleaned-up, profiled, and commented regex for parsing property lines.
Now handles quoted property values and non-significant whitespace correctly
(at least for my test cases...) and matches more efficiently.
Rigorously specifying allowed characters in quoted/non-quoted parameter
values allows the matcher to bail much more quickly with failed sub-matches,
reducing iterations by a couple orders of magnitude in some cases, and
should make the parsing more robust.
Using once-only subpatterns and non-capturing sub-patterns also improves
performance markedly.
Time for existing unit tests is now less than for the non-regex
version, but this may or may not be a good yardstick for real-world performance.
NOTE: I am not entirely certain that using [:blank:] for NSWSP is correct to
either RFC6350 inside parameter values or for VCard 2.1 around
property/parameter names/values BUT it works for the examples from the specs.
It may end up being that horizontal whitespace (\h) is really what is desired.