Перейти к содержимому

Vim regex: + должен быть экранирован, * нет. Зачем?

1

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

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

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

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

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

81 просмотр
Philip спросил 9 лет назад
P 850

1 ответ

2

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

Heptite ответил 9 лет назад
H 14 646