VB.NET - Regex.Replace错误与[字符

时间:2017-02-02 19:41:51

标签: regex vb.net replace

我想从文本框中删除一些字符。它工作,但当我尝试替换“[”字符时,它会给出错误。为什么?

#

error

当我删除+部分时效果很好吗?

    Return Regex.Replace(html, "[", "").Replace(",", " ").Replace("]", "").Replace(Chr(34), " ")

2 个答案:

答案 0 :(得分:2)

问题在于,由于[字符在正则表达式中具有特殊含义,因此必须对其进行转义才能将其用作正则表达式序列的一部分,因此要逃避它,您只需添加一个角色前的\

因此,这将是您正确的正则表达式代码Return Regex.Replace(html, "\[", "").Replace(",", " ").Replace("]", "").Replace(Chr(34), " ")

答案 1 :(得分:1)

因为[是正则表达式模式使用的保留字符。您应该始终使用Regex.Escape()转义搜索模式。这将找到所有保留字符并用反斜杠转义它们。

Dim searchPattern = Regex.Escape("[")
Return Regex.Replace(html, searchPattern, ""). 'etc...

但是为什么你还需要使用正则表达式呢?我认为,使用StringBuilder

,这是一种更好的方法
Dim sb = New StringBuilder(html) _
.Replace("[", "") _
.Replace(",", " ") _
.Replace("]", "") _
.Replace(Chr(34), " ")
Return sb.ToString()