Обычно . не соответствует новой строке, если я не укажу двигатель, чтобы сделать это с флагом (? S). Я попробовал это регулярное выражение на (UltraEdit v14.10) регулярных выражений двигатель моего редактора, используя режим стиль регулярных выражений Perl:Регулярное выражение с использованием режима Dot-Matches-All
(?s).*i
Текст поиска содержит несколько строк и каждая строка содержит много «Я» символов.
Я ожидаю, что выше регулярное выражение означает: поиск, как много символов (., Потому что с «? s» теперь соответствует ничего, включая символ новой строки), как это возможно (из-за алчности для *), пока не достигает символа ' я'.
Это должно означать «от первого символа до последнего« i »в последнем номере « (жадность должна доходить до последнего предложения, верно?).
Но с тестом UltraEdit он оказывается «от первого символа до последнего« i »в первом предложении, содержащем i». Правильно ли этот результат? Я сделал неправильную интерпретацию моего рег-выражения?
например. учитывая этот текст
aaa
bbb
aiaiaiaiaa
bbbicicid
это
aaa
bbb
aiaiaiai
совпадают. Но я ожидаю:
aaa
bbb
aiaiaiaiaa
bbbicici
Я не знаю об ошибке, которую вы упомянули. Но может ли быть так, что жадный поиск по всему входному файлу слишком медленный, что они решили изменить поведение таким образом? Помните, UltraEdit позволяет редактировать входной файл MB в размере. – JavaMan 2010-12-03 19:03:01
EditPadPro обрабатывает файлы GB в размерах и не имеет этих ограничений регулярного выражения. Если я создаю жадное регулярное выражение, я ожидаю, что он будет работать правильно. Если это означает нехватка памяти, то это моя проблема или ОС, но редактор не должен меня догадываться. – 2010-12-03 19:05:55