Как выбрать строку целиком?
Как в регулярном выражении задать строку от начала до конца?
(\A(^\Z)*\Z)
начало строки, не конец строки , конец строки.
Но так не работает.
Ответы (1 шт):
\A(^\Z)*\Z означает "начало строки", ноль и более начал строки, за которым следует конец строки, а затем конец строки. Бессмыслица. Наверное, вы полагаете, что ^ в (^\Z) служит отрицанием, но это не так. Даже если вы используете отрицающий символьный класс и поместите в него \Z (т.е. [^\Z]), он не станет находить всё кроме конца строки, так как символьные классы используются для поиска символов, а не позиций в строке. Все такие специальные символы - $, ^, \z, \Z, \b (граница слова) - перестают быть таковыми в символьных классах.
Чтобы найти строку целиком, нужно использовать
(?s)\A.*\z # PCRE, .NET, Java, RE2
(?s)\A.*\Z # Python re
^[^]*$ # JavaScript
(?m)\A.*\z # Onigmo (Ruby)
Где
(?s)(в Onigmo(?m)) - модификатор, который изменяет поведение точки, которая теперь находит символ переноса строки\A- начало строки\z/$/\Z- конец строки.