c# - Failing to recognize both keywords -
let me know if i'm asking question in wrong way. not sure if i'm approaching right angle.
my regex looks this.
^.+(ef?)|(mn?).+$ i'm trying match line 2 , 4 in text below.
abcd efgh ijkl mnop qrst
as seem, lastly 1 catches editors eye. missing?
i've tried follow some examples detecting e.g. "alpha" , "beta" words but, apparently, i'm ignorant of how works.
regex engine split below regex 2 parts.
^.+(ef?)|(mn?).+$ part 1| part 2 at-first, part1 executed.
^.+(ef?) .+ ensures there must atleast single character nowadays before e, there isn't. fails match sec one. , fails others because there isn't character e nowadays in remaining strings.
| or
now regex engine moves sec part,
(mn?).+$ matches string contains letter m. m nowadays in 4th string. matches m plus next 1 or more characters because of .+.
the right approach match 2 , 4th strings is:
^.*(ef?).*$|^.*(mn?).*$ or
^.*(?:(ef?)|(mn?)).*$ demo
use ^.*(?:(ef?)|(mn?)).+$, if there must character follows e , optional f or m , optional n
if want match strings starts e or m, utilize below regex.
^(ef?|mn?).+$ note:
.* matches character 0 or more times. .+ matches character 1 or more times. c# regex
No comments:
Post a Comment