Найти пропуски смешанного отступа - PullRequest
2 голосов
/ 27 мая 2019

Я пытаюсь написать регулярное выражение для сопоставления смешанного отступа (то есть табуляции и пробелов).

Вот что у меня сейчас:

.*((\t )|( \t))\s*

Результаты:

(---> обозначает табуляцию, точки - пробел).

....--->....foo    matched
--->....--->foo    matched
--->....foo        matched
....--->foo        matched

Проблема в том, что он соответствует смешанному пробелу в середине строки. Я хочу избавиться от этого совпадения, то есть я хочу сопоставить только отступ:

....foo....--->....bar    should not be matched

1 Ответ

3 голосов
/ 27 мая 2019

Как отмечалось в комментариях, наиболее важной функцией, которую вы пропустили, является привязка начала строки (^), и вам не следует использовать .*, так как это также будет соответствовать непустому пространству, которое вы хотитеизбегать.

Вы можете получить совпадение либо с ^\s*(\t | \t)\s*, либо с ^(\t+ | +\t)\s*.Второй вариант будет более эффективным.

В зависимости от вашей среды вам может потребоваться добавить модификатор m (или эквивалентный), чтобы ^ соответствовал началу строки (вместо начала).всего ввода).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...