Редактировать:
.*(REQ_.*?)\|
Хитрость есть ? говорит предшествующий .* чтобы остановить как можно раньше. Таким образом, первый | что следует, заканчивает сферу действия .* Это именно то, что вы хотите.
Мой старый ответ ниже. Это работает хорошо, но я думаю, что вышесказанное - правильный путь.
Старый ответ:
.* соответствует (почти) всему, включая | , Используйте [^|\n]* чтобы сопоставить все, кроме | и новая строка.
.*(REQ_[^|]*)\|
\n необходимо, потому что чистый [^|]* может охватывать совпадение по нескольким строкам. Я думаю, ты не хочешь этого.