Как сопоставить и заменить повторяющиеся групповые шаблоны и выровнять результат? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть фрагмент кода, подобный приведенному ниже

    [ "sortBy",       "String",               "sort by method" ],
    [ "sortOrder",    "String",               "sort order includes ascend and descend" ],
    [ "count",        "Int",                  "The number of results to return." ],
    [ "names",         "Array<String>",       "array of strings represents name" ]

Я хочу использовать регулярное выражение для сопоставления, замены и выравнивания, чтобы результат выглядел следующим образом:

    { Name = "sortBy";        Ref = "String";         Description = Some "sort by method" }
    { Name = "sortOrder";     Ref = "String";         Description = Some "sort order includes ascend and descend" }
    { Name = "count";         Ref = "Int";            Description = Some "The number of results to return." }
    { Name = "names";         Ref = "Array<String>";  Description = Some "array of strings represents name" } 

и каждый столбец должен быть выровнен. Я застрял в начале, как группировать совпадения и выравнивать результат. Мой поиск - это

 *\[ *"(.*)", *"(.*)", *"(.*)" *\],

в коде Visual Studio, но он соответствует только первой строке. Вместо этого я хочу сопоставить все строки сразу и заменить их, а затем выровнять.

1 Ответ

0 голосов
/ 25 октября 2019

Смысл здесь в том, чтобы сопоставлять и захватывать только те части, которые вам нужны, и просто сопоставлять другие части.

Вы можете использовать

^( *)\[( *)(".*?"),( *)(".*?"),( *)(".*?" *)\],?$

Заменить на $1{$2Name = $3;$4Ref = $5;$6Description = Some $7}.

См. Демонстрационный пример regex

Подробности

  • ^ - начало строки
  • ( *) - группа 1 ($1): начальные пробелы
  • \[ - символ [ (будет заменен на {)
  • ( *) - группа 2($2): пробелы после [
  • (".*?") - Группа 3 ($3): "..." подстрока
  • , - запятая (будет заменена на;)
  • ( *) - группа 4 ($4): пробелы после первой ,
  • (".*?") - группа 5 ($5): "..."подстрока
  • , - запятая (будет заменена на ;)
  • ( *) - группа 6 ($6): пробелы после второго ,
  • (".*?" *) - Группа 7 ($7): "..." подстрока и 0+ пробелов после
  • \],?$ - ], необязательный , и конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...