Поймать несколько строк по критериям - PullRequest
1 голос
/ 07 июля 2019

Я пытаюсь разобрать этот фрагмент текста.Первый шаг будет поймать все между [feat] и перевод строки.Второй шаг будет еще лучше, чтобы поймать все умения и сгруппировать их по указанной дате.Текст хранится в переменной.Вот пример:

## [1.0.0] - 2019-06-28
[feat] - Complete generate pdf refactor

## [1.0.1] - 2019-07-04
[fix] Fixed generate address

[fix] Fixed warrant print

[fix] Fixed note component

## [1.0.2] - 2019-07-05
[feat] Add views as response for production

[feat] Add component 

[fix] Fixed warrant

Я пытался использовать [(feat])(.*)/n и str.match, но мне чего-то не хватает.

Результат, который я пытаюсь получить, будет: [«Фиксированный адрес генерации», «Добавить представления в качестве ответа для производства», «Добавить компонент»]

или даже лучше сгруппировать по дате

1 Ответ

0 голосов
/ 07 июля 2019

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

/\[feat]\W*(.+)/g

См. Демоверсию regex . ПРИМЕЧАНИЕ: если между [feat] и данными, которые вам нужно извлечь, могут быть только пробелы и дефисы, вы можете указать шаблон как

/\[feat][\s-]*(.+)/g
        ^^^^^^

См. эту демонстрацию регулярных выражений и график регулярных выражений :

enter image description here

Детали

  • \[feat] - подстрока [feat]
  • \W* - 0 или более несловарных символов
  • [\s-]* - 0 или более пробелов или / и дефисов
  • (.+) - Группа 1: любые 0 или более символов, кроме символов разрыва строки.

JS демо:

var s = "## [1.0.0] - 2019-06-28\n[feat] - Complete generate pdf refactor\n## [1.0.1] - 2019-07-04\n[fix] Fixed generate address\n\n[fix] Fixed warrant print\n\n[fix] Fixed note component\n\n## [1.0.2] - 2019-07-05\n[feat] Add views as response for production\n\n[feat] Add component \n\n[fix] Fixed warrant";
var rx = /\[feat]\W*(.+)/g, m, res=[];
while (m=rx.exec(s)) {
  res.push(m[1]);
}
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...