Вы не указали язык, который используете. Если он поддерживает \ K, как PCRE (PHP) и другие, вы извлекаете подстроки, которые соответствуют следующему регулярному выражению.
(?:^|,)[^,|]*\K\|{2,}(?=[^,|]*(?:,|$))
Demo
The Механизм регулярных выражений выполняет следующие операции.
(?:^|,) # match start of string or ',' in a non-capture group
[^,|]* # match 0+ chars other than ',' and '|'
\K # forget everything matched so far
\|{2,} # match 2+ '|'
(?=
[^,|]* # match 0+ chars other than ',' and '|'
(?:,|$) # match a comma or the end of the string
) # end non-capture group
Взято из демонстрационной ссылки, «\ K сбрасывает начальную точку сообщенного совпадения».
Если вы wi sh для соответствия одиночному каналы между запятыми (например, ,1|2,
) замените {2,}
на +
.
Если \K
не поддерживается, но можно использовать группу захвата, можно использовать следующее регулярное выражение.
(?:^|,)[^,|]*(\|{2,})(?=[^,|]*(?:,|$))
Демо
Интересующие строки хранятся в группе захвата 1 для каждого совпадения.