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

Iva*_*ich 3 c# regex regex-lookarounds

Name: John
Surname: Doe
Age: 24
Run Code Online (Sandbox Code Playgroud)

当我做

Regex.Replace(str,"(?<=^|\n)(.*)(?=:)", "")    
Run Code Online (Sandbox Code Playgroud)

我明白了

: John
: Doe
: 24
Run Code Online (Sandbox Code Playgroud)

我想去掉冒号而不使用另一个替换

Wik*_*żew 6

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

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

(?m)^.*:
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

匹配(?m)^的开头,无需使用,因为它准确地表示了这一点。然后,匹配除换行符之外的任何 0+ 字符,尽可能多地匹配到最后一个和最后一个。(?<=^|\n).*:::

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