除特定标记组合

时间:2017-01-20 07:38:03

标签: c# regex string linq punctuation

我试图在字符串中只保留一个单词之间的空格,限制字符串中重复标记的数量为点,逗号,用标点符号替换合并后的单词(如果它在之间)并保持白色-空间。

我想要限制所有商标的金额,并且只保留一个字之间的问号除外,如果问号在点之前,我想保留两者,例如输入字符串是:

hello,,, world, how are you?.. hi...,.,.

现在我的结果是:

hello, world, how are you? hi.

但期望的输出应该是:

hello, world, how are you?. hi.

不确定怎么做

1 个答案:

答案 0 :(得分:2)

一个非常简单的解决方案可能是

([.,])+|( )+

它匹配逗号或点,并且因为它在捕获组中,所以捕获最后一个实例。交换匹配进行捕获,将只剩下一个。

编辑要处理多个空格,添加了另一个捕获组。它匹配空间,捕获最后一个。因此,与两个捕获交换匹配将处理标点符号和空格。

See the updated example here at regex101