Regex.Replace无法使其工作

时间:2014-04-08 06:24:19

标签: regex vb.net replace

我希望以下代码可以替换每个出现的空格+数字+空格,但它会替换任何+数字+任何内容。

nswapfirstpart = Regex.Replace(nswapfirstpart, "\W[0-9]\W", " _ ")

由于

3 个答案:

答案 0 :(得分:1)

使用“\ s [0-9] \ s”“\ s”用于空格,'\ w'用于单词

答案 1 :(得分:1)

您正在使用\W引用非单词字符并用

表示
[^A-Za-z0-9_]

所以它会匹配特殊字符,空格,基本上不是字母,数字或下划线的所有内容。

您需要使用表示空格字符的\s,并用

表示
[ \t\r\n\v\f]

因此,请使用:

"\s[0-9]\s"

而不是

"\W[0-9]\W"

答案 2 :(得分:1)

嗯,它不匹配任何它匹配非字母数字,这正是\ W选项的作用。

是等价的

swapfirstpart = Regex.Replace(nswapfirstpart, "[^a-zA-Z0-9_][0-9][^a-zA-Z0-9_]", " _ ")

如果你想要一个空白区域,那就不要使用\ W使用\ s甚至只是" "如果你想要的实际上是一个空间。

正则表达式本身就是一种完整的语言,非常富有表现力且非常强大 - 就像任何编程语言一样,它可以表达你所说的不是你想要的东西。准确地说出你说的话。