让我们说:
string result = Regex.Replace("people (MANY)", "(many)", "", RegexOptions.IgnoreCase);
然后,此结果将为people ()
。为什么这个以及如何更改正则表达式替换以删除括号?
答案 0 :(得分:4)
在正则表达式中,有一组字符可以具有特殊含义(\,*,+,?,|,{,[,(,),^,$,。,#和空格),如果你希望它们总是以你的模式表示,你需要逃避它们。
有一个通用函数Regex.Escape
将遍历上面的列表并转义它为您找到的每个实例。
Regex.Escape("(many)") // this becomes \(many\)
答案 1 :(得分:3)
你必须逃脱它们:http://msdn.microsoft.com/en-us/library/4edbef7e(v=vs.110).aspx
以下字符必须在正则表达式中进行转义,因为它们在模式匹配中具有含义:
。 $ ^ {[(|)* +? \
您可以使用案例\
和\(
\)
来转义此特殊字符
您的代码已相应更改:
string result = Regex.Replace("people (MANY)", "\(many\)", "", RegexOptions.IgnoreCase);
答案 2 :(得分:1)
这是因为括号在正则表达式中具有含义。他们定义了capturing group。
转义括号,使它们不被视为特殊字符,而是括号:
string result = Regex.Replace("people (MANY)", @"\(many\)", "", RegexOptions.IgnoreCase);
答案 3 :(得分:1)
将其更改为
string result = Regex.Replace("people (MANY)", @"\(many\)", "", RegexOptions.IgnoreCase);
()表示正则表达式引擎特有的东西,所以你必须逃避它们。
答案 4 :(得分:1)
括号是分组的特殊字符,您需要将它们转义:
Regex.Replace("people (MANY)", @"\(many\)", "", RegexOptions.IgnoreCase);
答案 5 :(得分:1)
正则表达式中的括号允许您定义capture group。您需要转义它们才能将它们视为常规字符
答案 6 :(得分:0)
括号在正则表达式中具有特殊含义 - 它们用于捕获(因此在替换中,您可以使用$ 1,它会为您提供在parens中的内容)。如果你想要一个文字,你必须逃避它们:\(