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

时间:2018-03-06 10:48:51

标签: c# regex regex-lookarounds

Name: John
Surname: Doe
Age: 24

当我这样做时

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

我得到了

: John
: Doe
: 24

我想在不使用其他替换

的情况下摆脱冒号

2 个答案:

答案 0 :(得分:3)

(?=:)是一种积极的先行,是一种非消费模式。 : char已经过测试但它没有落在匹配值中,因此不会被Regex.Replace方法替换。

您可以通过仅将前瞻模式转换为消费模式来使您的模式工作,即(?=:) =&gt; :,但您可以使用

简化模式
(?m)^.*:

请参阅regex demo

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

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

答案 1 :(得分:0)

将正向前移为负向前移。