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

时间:2018-02-28 11:12:44

标签: regex

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

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

如您所见,内容由管道分隔。内容没有固定长度,可以包含任何字符。 现在,我想将content6替换为xxxxxx。因此,我需要像“替换出现在第6位的管道之间的内容”

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

有谁知道如何做到这一点? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

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

^((?:[^|]*\|){5})[^|]*(.*)$

并将其替换为\1xxxxxx\2

测试live on regex101.com

<强>解释

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