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