Нужно помочь с регулярным выражением, которое будет использоваться для извлечения строки между start_pattern и end_pattern. Кроме того, регулярное выражение должно grep всех символов до конца строки, если end_pattern не существует.Регулярное выражение для извлечения строки между узорами
Sample 1 : "BOOK1:book1A,book1B,book1C,book1D"
Ожидаемые результаты: book1A, book1B, book1C, book1D
Sample 2 : "BOOK1:book1A,book1B,book1C,book1D|BOOK2:book2A,book2B,book2C,book2DA"
Ожидаемые результаты: (1) book1A, book1B, book1C, book1D (2) book2A, book2B, book2C, book2DA
Мне удалось разрешить регулярное выражение (показано ниже), когда ограничитель строки «|», но не может обойти его, когда нет терминатора
(?<=BOOK1:).*(?=\|)
Вы можете добавить знак вопроса в конце: '(? <= BOOK1:). *? (? = \ |)?', Также вы должны использовать t он не жадный '. *?' вместо жадного '. *', если вы не хотите, чтобы «Sample 2» соответствовал «book1A, book1B, book1C, book1D | BOOK2: book2A, book2B, book2C, book2DA' – Nolonar