Regex для сопоставления отдельных непоследовательных вкладок в произвольной строке? - PullRequest
2 голосов
/ 23 января 2020

У меня есть строка, которая может содержать что угодно. Мне нужно иметь возможность выбирать только те вкладки (\ t), которые не являются последовательными.

В приведенном ниже примере \ t используется вместо реальной вкладки для ясности.

Пример строка:

\t\t \t \t a\t
\ta\t\td
dd
d\t \t\t\t

В этом случае я хочу выбрать только те вкладки, которые обозначены заглавной буквой \ T:

\t\t \T \T a\T
\Ta\t\td
dd
d\T \t\t\t

Таким образом, три на первой строке один во второй строке и один в четвертой строке. Все остальные будут игнорироваться, потому что они являются последовательными вкладками. Обратите внимание, что последняя вкладка в первой строке и первая вкладка во второй строке разделены символом возврата каретки и / или новой строки, поэтому они не считаются последовательными.

Я был на этом для часов и не делаю успехов. Любая помощь будет высоко ценится!

1 Ответ

3 голосов
/ 23 января 2020

Используйте отрицательный взгляд по обе стороны от вкладки:

(?<!\t)\t(?!\t)

См. живая демонстрация .

(?<!\t) - отрицательный просмотр и означает «предыдущий символ не должен быть табуляцией», что также верно в начале ввода.

(?!\t) является отрицательным прогнозом и означает « следующий символ не должен быть табуляцией », что также верно в конце ввода.

Осмотритесь, утверждайте, но не потребляйте ввод.

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