正则表达式替换除多个匹配项之外的所有内容

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

我有一个像这样的字符串:

"This is some text.|Some more text.|Some other text.|Some different text."

我想要实现的是选择所有不符合这些条件的文本:

  1. 从行首选择前 n 个字符。
  2. 每次|之后选择前 n 个字符。

如果我设置 n=10 我应该得到这个选择:

"me text.|text.| text.|rent text."

最终目标是将所选文本替换为空, 这样剩下的就是:

"This is so, Some more , Some other, Some diffe"

到目前为止,我已经选择了要保留的文本,但不幸的是我需要替换不需要的文本。

我希望这是可行的。

这是我的正则表达式的当前状态:

^(.{20})|(\|)(.{20})

它为我提供了文本本身(包括 | ) 而且我还没有设法采用迄今为止我在问题上发现的内容。

string regex-negation
1个回答
0
投票

您可以使用捕获组和否定字符类,不包括匹配管道

([^\n|]{10})[^\n|]*(?:\||$)

正则表达式演示

在替换使用组 1 中,但请注意,您必须删除结尾的逗号和空格。

$1, 

输出

This is so, Some more , Some other, Some diffe, 
© www.soinside.com 2019 - 2024. All rights reserved.