我希望以下代码可以替换每个出现的空格+数字+空格,但它会替换任何+数字+任何内容。
nswapfirstpart = Regex.Replace(nswapfirstpart, "\W[0-9]\W", " _ ")
由于
答案 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甚至只是" "如果你想要的实际上是一个空间。
正则表达式本身就是一种完整的语言,非常富有表现力且非常强大 - 就像任何编程语言一样,它可以表达你所说的不是你想要的东西。准确地说出你说的话。