Regex для извлечения строки между шаблоном di git и двоеточием или новой строкой - PullRequest
3 голосов
/ 27 апреля 2020

Мне нужно извлечь строку между шаблоном di git и двоеточием или новой строкой (первый случай)

моя строка будет выглядеть так:

05-30-1306 -29-13 РИСК ДЛЯ СТРОИТЕЛЕЙ:
ОГРАНИЧЕНИЯ / ВЫБОРЫ:

Я бы хотел извлечь РИСК ДЛЯ СТРОИТЕЛЕЙ. Там может быть или не быть двоеточие, в таком случае мы будем рассматривать новую строку как завершающий шаблон

Вот что я придумал до сих пор

\d{2}-\d{2}-\d{4}-\d{2}-\d{2}\s*\W+[^:|\n]+:\s*

Числовой шаблон всегда будет 2 -2-4-2, за которым следует любая строка, за которой следует либо \ n, либо:

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

1-й матч - ди git шаблон

2-й матч - что мне нужно

3-й матч - двоеточие или новая строка

Любые указатели будут полезны.

ОБНОВЛЕНИЕ: Пара альтернатив текстового термина для поиска может быть такой

11-06-1212-29 -12 ПОЖАРНЫЙ ЖИЗНЬ (DP-3): ГОДОВАЯ АРЕНДА

11-05-1212-26-12 ДОМАШНИЕ ДОМА (HO-3): ВТОРОЙ ДОМ

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

PS: извлеченный текст не должен содержать толстой кишки

1 Ответ

3 голосов
/ 27 апреля 2020

Похоже, что вы можете использовать

\b(\d{2}-\d{2}-\d{4}-\d{2}-\d{2})\W+(.*?)(:?\r?\n\s*)

См. Демоверсию регулярных выражений , получая

enter image description here

Подробности

  • \b - граница слова (изменить на (?<!\d), если цифры можно приклеить к букве или подчеркиванию)
  • (\d{2}-\d{2}-\d{4}-\d{2}-\d{2}) - Группа 1: две цифры, -, две цифры, -, четыре цифры, -, две цифры, -, две цифры
  • \W+ - 1+ несловарных символов ( чтобы остаться на линии, замените на [^\w\r\n]+)
  • (.*?) - Группа 2: любые ноль или более символов, кроме новой строки, как можно меньше
  • (:?\r?\n\s*) - Группа 3 : необязательный :, необязательный CR, символ LF и затем любые 0+ пробельные символы.
...