2016-06-29 2 views
0

Я пытаюсь выбрать каждое вхождение из 4 ведущих пробелов в каждой строке файла, чтобы заменить их на 2 пробела, чтобы переформатировать. Найти все регулярное выражение Я закончил с использованием был:Есть ли более компактное регулярное выражение для этого вида?

^ {4}|(?<=^ {4}) {4}|(?<=^ {8}) {4}|(?<=^ {12}) {4}|(?<=^ {16}) {4} 

Я сделал a demo here показывая, как именно я ожидаю, что это выделить файл.

Есть ли лучший способ достичь этого? Примечание. Я хочу, чтобы Sublime Text индивидуально выбирал каждую группу из 4 пробелов, я не хочу, чтобы каждая строка, содержащая ведущее белое пространство, была в одном выборе.

+0

Как насчет использования ['\ G' для склеивания] (http://www.regular-expressions.info/continue.html) соответствует началу строки, [см. Демонстрацию в regex101] (https: // regex101. ком/г/yX5vQ2/1). На самом деле это не требовало бы поиска, но не требовало бы [гораздо больше шагов] (https://regex101.com/r/xN0pV0/1). –

ответ

1

^(?:() )(?:() )?(?:() )?(?:() )? заменить \1\2\3\4

функционально эквивалентны и не требуют просмотра назад.

Требуется около 9% усилия для двигателя регулярных выражений (702 против 7680 шагов).