
On 2/25/2010 1:42 PM, Timothy Sassone wrote:
I'm new to both boost and Xpressive, but I've worked with regex before. I've been able figure most of it out from the Xpressive user guide, but I'm having some trouble with a particular expression. <snip> since the date of death is sometimes completely absent, I need some way to get the number if it's there, and skip it otherwise. From what I understand, I'll need to use the lookahead or lookbehind constructs <snip>
It's much simpler than that. You want an optional quantifier.
Here's what I'm using to parse up through the date of birth... mark_tag RU_Name(1), RU_Birth(2), RU_Death(3), RU_ReignBegin(4), RU_Line(5), RU_Married(6); sregex Reg_Ruler = " [*] " >> ( RU_Name = +(+_w|_s) ) >> "(b." >> (RU_Birth = (+(_d)|"???"));
... >> !("d." >> (RU_Death = +_d)) >> ... The '!' makes the sub-expression match 1 or 0 times. After the regex_match, you can check the match_results to see if RU_Death participated in the match like: if (results[RU_Death].matched) // ... results[RU_Death] contains a date of death.
Any help would be much appreciated, and a link to a decent tutorial to help me with Xpressive in general would be even better.
The decent tutorial on xpressive is the users' guide. Or does that not qualify as "decent"? Ahem. ;-) -- Eric Niebler BoostPro Computing http://www.boostpro.com