regex to match substring after nth occurence of pipe character

i am trying to build one regex expression for the below sample text in which i need to replace the bold text. So far i could achieve this much ((\|)).*(\|) which is selecting the whole string between the first and last pip char. i am bound to use apache or java regex.

Sample String: where text length between pipes may vary

1.1|ProvCM|111111111111|**10.15.194.25**|10.100.10.3|10.100.10.1|docsis3.0

To match part after nth occurrence of pipe you can use this regex:

/^(?:[^|]*\|){3}([^|]*)/

Here n=3

It will match 10.15.194.25 in matched group #1

RegEx Demo


^((?:[^|]*\\|){3})[^|]+

You can use this.Replace by $1<anything>.See demo.

https://regex101.com/r/tP7qE7/4

This here captures from start of string to | and then captures 3 such groups and stores it in $1.The next part of string till | is what you want.Now you can replace it with anything by $1<textyouwant>.