Пожалуй, проще всего просто сопоставить регулярное выражение
(?<=Y\|)[^|]*
Демо
и взять первое совпадение. Это соответствует ZXIET
после "Y|"
и пустой строке после второй "Y|"
.
В качестве альтернативы, предположим, что вы просто добавили знак вопроса к (.*)
в регулярном выражении, которое вы пытались сделать, чтобы он не жадный, приводящий к остановке непосредственно перед первым, а не последним, "|"
:
(?<=Y\|)(.*?)(?=\|)
Более того, в действительности нет смысла иметь группу захвата, поскольку она просто возвращает совпадение, которое в любом случае вы получите:
(?<=Y\|).*?(?=\|)
Демо
С примером, который соответствует ZXIETV
и |ZXIET
. Однако, если строка примера была бы
Y||ZXIETV| |N|100|Y||ZXIET|ZXIET|Nl
, первое совпадение было бы |ZXIETV
, что, вероятно, не то, что вы хотите. Поэтому я предлагаю вам использовать первое предложенное мной регулярное выражение.