Я придумала 3 регулярных выражения, которые будут делать то, что вы хотите. Чтобы запустить их все последовательно, вам понадобится regreplace extension или аналогичный.
Это идет в ваших настройках:
"regreplace.on-save": false,
"regreplace.commands": [
{
"name": "Transform Data to Table Format, step 1",
"regexp": "([a-zA-Z]+|[\\d-]+)(15)?(\\s[\r\n]?)*",
"replace": "$1 \n",
"priority": 1,
},
{
"name": "Transform Data to Table Format, step 2",
"regexp":
"(([\\S-] {6})(.*))|(([\\S-]{2} {5})(.*))|(([\\S-]{3} {4})(.*))|(([\\S-]{4} {3})(.*))",
"replace": "$2$5$8$11",
"priority": 2,
},
{
"name": "Transform Data to Table Format, step 3",
"regexp":
"((.*)\n)((.*)\n)((.*)\n)((.*)\n)((.*)\n)((.*?)(\\s*\\n))",
"replace": "$2$4$6$8$10$12\n",
"priority": 3,
}
],
Создает правило для каждого из трех шагов регулярного выражения. Все три правила могут быть запущены последовательно с помощью команды regreplace.regreplace
. Вот демо:
Регулярные выражения разработаны так, чтобы хорошо выглядеть с элементами данных длиной до 4 символов, но их можно легко изменить для более длинных элементов.
На шаге 1 увеличьте количество пробелов перед \ n в правиле замены примерно до 16 или около того.
На шаге 2 вам нужно почувствовать структуру групп регулярных выражений, таких как (([\\S-]{4} {3})(.*)
, чтобы изменить их. Для переменной длиной 13 символов может потребоваться что-то вроде (([\\S-]{13} {3})(.*)
в качестве последней группы и ([\\S-] {15})(.*))
в качестве первой в последовательности и т. Д., Изменяющие все остальные группы по порядку. Дайте мне знать, если вам нужна помощь с этим.
Шаг 3 не требует изменений, если только вы не хотите изменить количество элементов данных, отображаемых в каждой строке - сейчас есть 3 переменные с данными в каждой строке, следовательно, 6 групп в этом регулярном выражении.
Неважно, сколько пар данных и значений находится в какой-либо строке перед выполнением команды.
[Два предостережения: там не должно быть никаких пустых строк перед началом данных , хотя при необходимости вы можете использовать регулярное выражение в качестве первого правила для удаления пустых строк. Пустые строки в данных или в конце не являются проблемой.
Во-вторых, расширение не может быть запущено только для выделенного текста, поэтому вам придется поместить данные в верхнюю часть пустого файла, чтобы преобразовать его, а затем скопировать в другое место, если хотите.]
Существует также расширение правил замены , которое работает как regreplace, но, в соответствии с документами, работает только на выборке, но у меня здесь не работает по неизвестной причине. Тем не менее, он имеет более приятный интерфейс - все регулярные выражения могут входить в единое правило, которое затем может запускаться независимо.