2012-11-27 36 views
0

我有以下的C#代码用空格来代替.的和+的:如何合并2个简单的正则表达式?

string MyString = "this.is.just+an++example--here!are$more characters"; 
MessageBox.Show(Regex.Replace(MyString, @"[\.\+]", " ")); 

有时,这可能会导致多余的空格(如,anexample之间)。

如何将以下RegEx添加到我现有的RegEx中,因此只有一个RegEx调用?

Regex.Replace(MyString, @"[ ]{2,}", " "); 

这将删除多余的空白。所有其他角色应保持不变。

任何备用解决方案也欢迎!

回答

2

也许你应该首先匹配多个字符。将正则表达式更改为"[\.\+]+"以匹配一个或多个.+标志。例如,"a...++b"将导致"a b"

MessageBox.Show(Regex.Replace(MyString, @"[\.\+]+", " ")); 
+0

不错!只有一个问题:在字符串中已经出现多余空间的地方呢?即'string MyString =“some test hi”;' –

+0

将\ s添加到表达式应该覆盖该表达式。 @“[\。\ + \ s] +” –

+1

只需为正则表达式添加空格:'[\。\ + \] +' – RJo

2

你应该试试这个。你不需要逃过.如果它是在一个字符类内

[.\+]+|[ ]{2,} 
+0

它看起来像这样也可以:'Regex.Replace(MyString,“[。+] +”,“”)' - 这有什么问题吗?谢谢 –

+0

@DannyBeckett没有。这也应该起作用。 – garyh

+0

完美,非常感谢! –