Hi,
>> You do have one good question here
My question was the following: Is there a way to get a list or whatever of named captures/groups?
Here is an example:
print_captures("a(?<val1>.*)", "abcbah");
The expected result should be (or something similar):
Expression: "a(?<val1>.*)"
Text: "abcbah"
** Match found **
Sub-Expressions:
$0 = "abcbah"
$1 = "bcbah"
$+{val1} = "bcbah"
Captures:
$0 = { "abcbah" }
$1 = { "bcbah" }
$+{val1} = { "bcbah" }
But I got:
Expression: "a(?<val1>.*)"
Text: "abcbah"
** Match found **
Sub-Expressions:
$0 = "abcbah"
$1 = "bcbah"
Captures:
$0 = { "abcbah" }
$1 = { "bcbah" }
Best Regards
-----Ursprüngliche Nachricht-----
Von: Anthony Foiani [mailto:tkil@scrye.com]
Gesendet: Dienstag, 31. Jänner 2012 17:49
An: boost-users@lists.boost.org
Cc: NoRulez
Betreff: Re: [Boost-users] Boost.Regex: Iterate over named captures/groups
NoRulez <norulez@me.com> writes:
> if I have a regex (e.g.: "^Subject: (Re: |Fw: )*(?<subject>.*)")
>
> I know I can access them with what["subject"] but is there a way to get
> a list or whatever of named captures/groups?
What would you expect to see?
You asked for a named group "subject", which matches zero or more characters; as such, it will *always* match (if the whole match
succeeds) but it might be empty.
And as for "(Re: |Fw: )*", it will always be submatch 1, and its contents will most likely be whatever it found on the last time through.
You do have one good question here: I don't know how Boost.Regex would signal that "(Re: |Fw: )*" didn't match at all. (Perl would use undef to distinguish between that case and the empty string, but C++ doesn't have that option.)
And it looks like the answer is (surprise!) in the documentation
already:
(or: http://preview.tinyurl.com/846ls72 )
Hope this helps,
t.