On Thursday, 7 August 2014 at 16:05:17 UTC, seany wrote:
Cosider please the following:
string s1 = PREabcdPOST;
string s2 = PREabPOST;
string[] srar = ["ab", "abcd"];
// this can not be constructed with a particular order
foreach(sr; srar)
{
auto r = regex(sr; "g");
auto m = matchFirst(s1, r);
break;
// this one matches ab
// but I want this to match abcd
// and for s2 I want to match ab
}
obviously there are ways like counting the match length, and
then using the maximum length, instead of breaking as soon as a
match is found.
Are there any other better ways?
It's not clear to me what exactly you want, but:
Are the regexes in `srar` related? That is, does one regex always
include the previous one as a prefix? Then you can use optional
matches:
/ab(cd)?/
This will match "abcd" if it is there, but will also match "ab"
otherwise.