Ваша путаница оправдана. В большинстве разновидностей регулярных выражений ^
эквивалентно \A
, а $
эквивалентно \Z
по умолчанию, и вам нужно установить флаг "multiline", чтобы они приобрели другие значения (т.е. границы строк) , В Ruby ^
и $
всегда совпадают на границах строки.
Чтобы добавить путаницу, в Ruby есть то, что он называет «многострочным» режимом, но это действительно то, что все остальные называют «однострочным» или «DOTALL» режимом: он меняет значение метасимвола .
, позволяя для сопоставления символов разделителя строк (например, \r
, \n
), а также всех других символов.