我有一个像这样的字符串:
"This is some text.|Some more text.|Some other text.|Some different text."
我想要实现的是选择所有不符合这些条件的文本:
如果我设置 n=10 我应该得到这个选择:
"me text.|text.| text.|rent text."
最终目标是将所选文本替换为空, 这样剩下的就是:
"This is so, Some more , Some other, Some diffe"
到目前为止,我已经选择了要保留的文本,但不幸的是我需要替换不需要的文本。
我希望这是可行的。
这是我的正则表达式的当前状态:
^(.{20})|(\|)(.{20})
它为我提供了文本本身(包括 | ) 而且我还没有设法采用迄今为止我在问题上发现的内容。
您可以使用捕获组和否定字符类,不包括匹配管道。
([^\n|]{10})[^\n|]*(?:\||$)
模式匹配:
(
捕获第 1 组
[^\n|]{10}
重复 10 次匹配换行符以外的字符或 |
)
关闭第 1 组[^\n|]*
匹配除换行符或 |
(?:\||$)
匹配 |
或字符串末尾在替换使用组 1 中,但请注意,如果您正在进行单个替换,则会有一个尾随逗号和一个空格,您在处理和删除后将拥有这些逗号。
$1,
输出
This is so, Some more , Some other, Some diffe,
另一个想法是在
|
上进行分割,然后循环分割结果,取前 10 个字符,并用 ,
将结果连接回来