在结果中包含正向前瞻中的字符

问题描述 投票:1回答:1
Name: John
Surname: Doe
Age: 24

当我做

Regex.Replace(str,"(?<=^|\n)(.*)(?=:)", "")    

我明白了

: John
: Doe
: 24

我想在不使用其他替换品的情况下摆脱冒号

c# regex regex-lookarounds
1个回答
3
投票

(?=:)是一个积极的前瞻,是一种非消费模式。测试了: char,但它没有落在匹配值内,因此不会被Regex.Replace方法替换。

您可以通过仅将前瞻模式转换为消耗模式(即(?=:) => :)来使您的模式工作,但您可以使用简化模式来简化模式

(?m)^.*:

regex demo

(?m)^匹配一行的开头,没有必要使用(?<=^|\n),因为它恰好表示。然后,.*:匹配除了换行符之外的任何0+字符,尽可能多地使用最后一个:以及最后一个:

要在:之后删除空格,您可以添加\s*,或者(如果您只想处理水平空白字符)[\p{Zs}\t]*

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