Regex 替换两个字符之间字符串中出现的第n个字符

Regex 替换两个字符之间字符串中出现的第n个字符,regex,Regex,我必须使用正则表达式来删除字符串中的某些内容 例如 SomeText;content1 | content2 | content3 | | | content6 | | content8 如您所见,内容物由管道分隔。内容没有固定长度,可以由任何字符组成。 现在我想用xxxxxx替换content6。因此,我需要类似于“在第6次事件中替换管道之间的内容” 结果应该是: SomeText;content1 | content2 | content3 | | | xxxxxx | | content8

我必须使用正则表达式来删除字符串中的某些内容

例如
SomeText;content1 | content2 | content3 | | | content6 | | content8

如您所见,内容物由管道分隔。内容没有固定长度,可以由任何字符组成。 现在我想用
xxxxxx
替换
content6
。因此,我需要类似于“在第6次事件中替换管道之间的内容”

结果应该是:
SomeText;content1 | content2 | content3 | | | xxxxxx | | content8

有人知道怎么做吗?
提前谢谢你

假设我们不需要处理任何“逃逸管道”,您可以搜索

^((?:[^|]*\|){5})[^|]*(.*)$
并将其替换为
\1xxxxxx\2

测试一下

说明:


[^ |]*
匹配除
之外的任意数量的字符,因此
(?:[^ |]*\\\\\124;){5}
匹配第五个管道之前和包括第五个管道在内的所有内容。

您如何确定第六个出现的内容?是什么决定和描述了每次事件?您是否完全忽略了第一个分号之前的任何内容?然后让您的模式在第一个分号之前匹配或不匹配的内容,然后再匹配五次管道…根据语言/环境的不同,您也可以将管道上的文本拆分并重新构建。非常感谢。这个很好用。尝试了很长时间,但没有成功。