Почему поиск.* Не работает в 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 в последней версии, включенный во все мощные возможности этого движка регулярных выражений.

Другие вопросы по тегам