在两个字符之间的字符串中替换第n个匹配项

问题描述 投票:0回答:1

我必须使用正则表达式来交叉字符串中的一些内容。

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

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

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

有谁知道如何做到这一点?先感谢您!

regex
1个回答
1
投票

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

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

并用\1xxxxxx\2替换它。

测试它live on regex101.com

说明:

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

© www.soinside.com 2019 - 2024. All rights reserved.