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.

Reply via email to