Почему поиск.* Не работает в UltraEdit?
В UltraEdit я включил регулярные выражения в стиле UNIX, но нашел .*
не работает; только .+
найду что-нибудь.
Почему и как я могу заставить это работать?
Я должен добавить, что я работаю с UltraEdit 11.10b. Есть известная ошибка или что-то?
1 ответ
.
соответствует любому символу, кроме возврата каретки и перевода строки.
*
соответствует предыдущему выражению 0 или более раз, но не является жадным.
Не жадность означает как можно меньше символов, чтобы получить положительный результат для выражения.
Выражение .*
имеет смысл только между двумя фиксированными строками. Вы не можете использовать только .*
поскольку ничто не соответствует, это также положительное совпадение для этого выражения. Любой символ кроме нулевых разрядов строки достаточно для положительного результата для этого выражения и, следовательно, просто .*
всегда ничего не соответствует. Или другими словами: ничего не найдено, это положительный результат для регулярного выражения .*
,
Также word.*
а также .*word
не полезны, как с этими выражениями просто word
найден или вы получите непредсказуемые результаты.
С .*
или же .+
в строке поиска движку поиска всегда нужна фиксированная строка до и после или не совпадающий якорь, например ^
или же $
знать, с чего начать выбор любого символа, кроме символов окончания строки 0 соответственно 1 или более раз.
Кстати, механизм регулярных выражений Unix UE v11.10b - это просто механизм регулярных выражений UltraEdit, используемый с синтаксисом регулярных выражений Perl. Это также объясняет, почему механизм регулярных выражений Unix поддерживает только то, что поддерживает механизм регулярных выражений UltraEdit, только с другим набором специальных символов. Вам следует подумать об обновлении UltraEdit до текущей версии 21.10, которая имеет реальный движок регулярных выражений Perl в последней версии, включенный во все мощные возможности этого движка регулярных выражений.