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

Regex 正则表达式替换字符串中的非单词字符,忽略特定字符,regex,vb.net,regex-negation,Regex,Vb.net,Regex Negation,在VB.net中,我有一行从字符串中删除所有非字母数字字符: return Regex.Replace(build, "[\W]", "") 现在,我需要扩展它,以删除不是[]或u的非字母数字字符 我已将该行更改为: return Regex.Replace(build, "[\W\[\]_]", "") 但是我很肯定这是说 替换非单词或[或]或_ 我如何否定[]和uChars的测试,使其显示 replace non-word and not [ and not ] and not _ 一

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

return Regex.Replace(build, "[\W]", "")
现在,我需要扩展它,以删除不是[]或u的非字母数字字符

我已将该行更改为:

return Regex.Replace(build, "[\W\[\]_]", "")
但是我很肯定这是说

替换非单词或[或]或_

我如何否定[]和uChars的测试,使其显示

replace non-word and not [ and not ] and not _
一些例子:

"[Foo Bar_123456]" => "[FooBar_123456]"
"[Foo Bar_123-456*]" => "[FooBar_123456]"
(如有必要,可提供更多)

您可以使用:

例如,删除了
\W
[
]
(后两者需要转义,因为它们是字符集中的元字符)。逐字字符串
@“…”
避免了从C#中转义每个反斜杠:

您可以使用:

例如,删除了
\W
[
]
(后两者需要转义,因为它们是字符集中的元字符)。逐字字符串
@“…”
避免了从C#中转义每个反斜杠:

试试这个正则表达式:

[^\w\[\]]
它说匹配(然后替换)除字母数字以外的所有内容(包括“”)、“[”和“]”

试试这个正则表达式:

[^\w\[\]]

上面写着匹配(然后替换)除字母数字(包括“”)、“[”和“]”之外的所有内容。模式应该是:
[\W-[\\\[\]]
?@JonEgerton-Oops,是的。被反斜杠冲昏头脑:-)。
[\W-[]]
也有效<代码>]如果它是开头后的第一个字符
[
[^
[
如果不跟随
-
,则不必转义;
\W
不匹配,因此不需要列出它。我明白了。模式应该是:
[\W-[\\\\[\\]]
?@JonEgerton Oops,是的。被反斜杠迷住了:-)。
[\W-[]]]
也有效。
]
如果是开头后的第一个字符
[
[^
[
如果不遵循
-
,则它并不特别;
\u
\W
不匹配,因此不需要列出它。
[^\w\[\]]