AZJIO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору totnetot Цитата: .* находит только 1 строку от начала до конца s).* находит весь многострочный текст | флаг (?s) меняет значение точки, то есть .* это даже аббревиатура s-строка, m-многострочная_строка. Флаг s воспринимает текст как строку, то есть в нем нет переносов, символы переноса являются всего лишь обычными символами и флаг s работает с текстом как с одной строкой. Флаг m работает с текстом как много строк, меняются значения точки и начала/конец строки. Если ты хочешь чтобы (.+?) работало на каждой строке, то есть не могло захватить 2 и более строк, то ставишь флаг (?m), тогда ты не заботишься о том чтобы точка не содержала перенос строк, то есть не делаешь ([^\r\n]+?). А если хочешь чтобы точка захватывала всё подряд без исключений, то ставишь флаг (?s) Цитата: .* находит только 1 строку от начала до конца | Это работает в правильно логике, дошла до первого переноса строки и оборвала шаблон. Так и было задумано. Как выбрал то и получил. Если это работает не так, значит в опциях движка PCRE допустим что-то включили по умолчанию, когда компилировали программу. То есть поведение программ с одним и тем же движком может отличаться. Допустим в новой версии AutoIt3 чтобы вернуть старое поведение нужно явно указать что является переносом строки. Допустим перенос может быть CR, LF или CRLF или любая из этих комбинаций, то есть как и в Notepad++ ты задаешь что у тебя является переносом строк, юникс формат или мак или виндос | Всего записей: 4544 | Зарегистр. 03-05-2006 | Отправлено: 14:37 17-08-2018 | Исправлено: AZJIO, 14:44 17-08-2018 |
|