|Pathologically Eclectic Rubbish Lister|
Regex Optional capture doesn'tby NetWallah (Canon)
|on Oct 05, 2017 at 16:19 UTC||Need Help??|
NetWallah has asked for the
wisdom of the Perl Monks concerning the following question:
In parsing a log file lines that contains XML-ish content with a single regex, I'm having trouble understanding the subtleties of optional capture.
The string I'm parsing is like:
And I'm trying to extract the content of the "type", and the tag name of a tag that ends with "TagIwant".
The Tag may or may not be present.
I'm able to capture both pieces with the RE:
but - the match fails if I append a "?" to the expression, in an attempt to make it optional.
I.e. this fails:
Which returns only "MyType", and not the second expected capture of "SomeTagIwant".
The "\b" is an attempt to deal with variations like <SomeTagIwant/> and <SomeTagIwant k3="v3" /> .
I'm hoping for (1) Explanations for why the "?" fails, and (2) Suggestions on how to fix it.
All power corrupts, but we need electricity.