Я ожидал, что будет работать следующее (и оно работает):
x = '"aa","bb","cc"'
x =~ /\A(".*?",){2}".*?"\Z/
#=> 0
... но я не ожидал, что следующие два сработают (и не хочу, чтобы они работали). Я специально использовал ?
, чтобы сделать .*
нежадным:
x =~ /\A(".*?",){0}".*?"\Z/
#=> 0
x =~ /\A(".*?",){1}".*?"\Z/
#=> 0
Я ожидаю: начало строки (\A
), затем "aa",
, затем "bb",
(сейчас два совпадения, то есть {2}
), затем "cc"
и конец строки \Z
.
Я понимаю , почему они работают, но я хочу понять, как добиться того, чего я хочу ...
Я хочу, чтобы не удалось в последних двух примерах выше (но это не так). Другими словами, я хочу, чтобы следующее не получилось:
x = '"aa","bb","cc","dd"'
x =~ /\A(".*?",){2}".*?"\Z/
#=> 0
Он должен видеть: \A
, "aa"
, "bb"
, "cc"
и затем FAIL на последующем ,
(тот факт, что это не было \Z
).