Visual Studio中空格的正则表达式

时间:2014-11-05 06:15:04

标签: regex expression

我使用常规exprssion来帮助在Visual Studio 2012中查找/替换。

根据msdn,(?([^\r\n])\s)匹配任何空白字符,除了换行符。

但我不明白它是如何运作的。

我只知道[^\r\n]排除换行符,\s匹配任何空格。

外面(?)混淆了我,在msdn上找不到任何关于它的信息。

有人可以解释一下吗?或者给我一个咨询链接。

1 个答案:

答案 0 :(得分:1)

你的正则表达式错了。仅当\s前面有正或负前瞻时,它才有效。

(?:(?=[^\r\n])\s)

DEMO

上述正则表达式的含义是,匹配空格字符,但它不会是\n\r

<强>解释

(?:                      group, but do not capture:
  (?=                      look ahead to see if there is:
    [^\r\n]                  any character except: '\r' (carriage
                             return), '\n' (newline)
  )                        end of look-ahead
  \s                       whitespace (\n, \r, \t, \f, and " ")
)                        end of grouping

(?:(?![\r\n])\s)

DEMO

你也可以用负前瞻来达到同样的效果。

<强>解释

(?:                      group, but do not capture:
  (?!                      look ahead to see if there is not:
    [\r\n]                   any character of: '\r' (carriage
                             return), '\n' (newline)
  )                        end of look-ahead
  \s                       whitespace (\n, \r, \t, \f, and " ")
)                        end of grouping