smls has asked for the wisdom of the Perl Monks concerning the following question:
After a regex has successfully matched, the @LAST_MATCH_START (shortcut: @-) special variable lists the character offset of the start of each matched subpattern ("capture group").
To use it, though, you need to know the indices of all capture groups of interest within the regex - which, in case of complex, possibly dynamically assembled regexes is inconvenient/impossible.
Named capture groups provide a more robust solution for working with complex/dynamic regexes, and I've really started to like them recently.
However, there seems to be no equivalent to @LAST_MATCH_START that would provide the start offset for capture groups referenced by name rather than by index.
The documentation mentions %LAST_MATCH_START (shortcut: %-) which, based on the name, one might expect to provide what I'm looking for, however it does something totally different. Something for which the long version of the name does not make any sense, and indeed that version throws an error for me (yes, I've tested with use English;).
Questions:
- Have I missed something? Is there after all a way to do what I describe?
- About the misleading and apparently non-functional %LAST_MATCH_START name, is that a documentation error? If so, who should be notified to fix it?
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Is there really no @LAST_MATCH_START equivalent for named capture groups?
by LanX (Saint) on Jan 30, 2013 at 00:53 UTC | |
by LanX (Saint) on Jan 30, 2013 at 10:51 UTC | |
Re: Is there really no @LAST_MATCH_START equivalent for named capture groups?
by Anonymous Monk on Jan 30, 2013 at 08:35 UTC |