2

这工作完美..

 result2 = Regex.Replace(result2, "[^A-Za-z0-9/.,>#:\s]", "", RegexOptions.Compiled)

但我需要允许方括号([])。在不改变上面允许和不允许的内容的情况下允许使用括号是否正确?

result2 = Regex.Replace(result2, "[^A-Za-z0-9\[\]/.,>#:\s]", "", RegexOptions.Compiled)

我需要第二个意见的原因是,我认为如果这是正确的,那么其他东西会阻止它,这是我无法控制的。

4

2 回答 2

2

我不能说任何人回答或不回答问题或试图提供帮助,如果可以的话,我会将解决方案分配给每个人,因为它让我思考。关键是使用单个 \ 来分隔括号。感谢大家的帮助。

  result = Regex.Replace(result, "[^A-Za-z0-9/\[\].,>#\s]", "", RegexOptions.Compiled)
于 2012-09-18T19:01:15.593 回答
0

@tripleee 提到的噱头确实适用于.NET。只需确保]是第一个字符(或者在这种情况下,在^.

result2 = Regex.Replace(result2, "[^][A-Za-z0-9/.,>#:\s]", ""); 

但要小心将正则表达式移植到其他口味。有些人会将其视为语法错误,而有些人会将其视为两个原子:[^]and [A-Za-z0-9/.,>#:\s],其中第一个实际上匹配任何内容,但什么都不匹配——即,任何字符,包括换行符。

在旁注中,您为什么使用该RegexOptions.Compiled选项?只有当你知道你需要它时,你才应该使用它。提高的性能几乎永远不会显着,并且价格相当高,如here所述。

http://msdn.microsoft.com/en-us/library/8zbs0h2f.aspx

于 2012-09-18T17:03:24.083 回答