我使用常规exprssion来帮助在Visual Studio 2012中查找/替换。
根据msdn,(?([^\r\n])\s)
匹配任何空白字符,除了换行符。
但我不明白它是如何运作的。
我只知道[^\r\n]
排除换行符,\s
匹配任何空格。
外面(?)
混淆了我,在msdn上找不到任何关于它的信息。
有人可以解释一下吗?或者给我一个咨询链接。
答案 0 :(得分:1)
你的正则表达式错了。仅当\s
前面有正或负前瞻时,它才有效。
(?:(?=[^\r\n])\s)
上述正则表达式的含义是,匹配空格字符,但它不会是\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)
你也可以用负前瞻来达到同样的效果。
<强>解释强>
(?: 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