c# - Regex match one digit or two -
if
(°[0-5]) matches °4
and
((°[0-5][0-9])) matches °44
why this
((°[0-5])|(°[0-5][0-9])) match °4 not °44?
because when use logical or in regex regex engine returns first match when find match first part of regex (here °[0-5]), , in case since °[0-5] match °4 in °44 returns °4 , doesn't continue match other case (here °[0-5][0-9]):
((°[0-5])|(°[0-5][0-9])) a|b, , b can arbitrary res, creates regular expression match either or b. arbitrary number of res can separated '|' in way. can used inside groups (see below) well. as target string scanned, res separated '|' tried left right. when 1 pattern matches, branch accepted. means once matches, b not tested further, if produce longer overall match. in other words, '|' operator never greedy. match literal '|', use \|, or enclose inside character class, in [|].
Comments
Post a Comment