Регулярное выражение Vim: + нужно экранировать, * — нет. Почему?

Регулярное выражение Vim: + нужно экранировать, * — нет. Почему?

Предположим, вы хотите выбрать строки, которые содержат: необязательные пробелы, за которыми следует положительное целое число, за которым следует еще больше необязательных пробелов.

Вот регулярное выражение, которое подойдет для этого:

:g/^\s*\d\+\s*/

Оператор *не экранируется, в то время как +есть. Экранирование нарушает регулярное выражение . *То же самое происходит и при отмене экранирования.+

Есть ли этому хорошее объяснение? В идеале что-то, что сделает правило интуитивно понятным. В vim мне всегда было трудно писать регулярные выражения из-за необычных правил экранирования, поэтому я бы хотел получить какое-то понимание, которое заставит все щелкнуть для меня.

решение1

Это по историческим причинам, и если это изменить, то совместимость будет нарушена. Однако вы можете добавить к шаблону префикс , чтобы \vвключить "очень волшебный", так что вам не придется делать специальное экранирование. Смотрите :help /\v.

Связанный контент