正则表达式替换字符串中的非单词字符,忽略特定的字符

时间:2011-10-08 10:15:20

标签: regex vb.net regex-negation

在VB.net中,我有以下行从字符串中删除所有非字母数字字符:

return Regex.Replace(build, "[\W]", "")

我现在需要对此进行扩展,以删除不是[]或_的非字母数字字符。

我已将行改为:

return Regex.Replace(build, "[\W\[\]_]", "")

但我很确定这说的是

  

替换非单词或[或]或_

如何否定[]和_ chars的测试,以便

replace non-word and not [ and not ] and not _

一些例子:

"[Foo Bar_123456]" => "[FooBar_123456]"
"[Foo Bar_123-456*]" => "[FooBar_123456]"

(必要时可提供更多)

2 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

[^\w\[\]]

它表示匹配(然后替换)除字母数字以外的所有内容(包括“_”),“[”和“]”

答案 1 :(得分:1)

您可以使用character set subtraction

[\W-[_\[\]]]

IE中。已移除\W_[的{​​{1}}(后两个需要转义,因为它们是字符集中的元字符)。逐字字符串]避免了需要从C#转义每个反斜杠:

@"..."
相关问题