为什么带有 \s 的正则表达式不起作用?
您的正则表达式\s确实有效。不起作用的是您的替换字符串。当然,正如其他人指出的那样,它不应该。
人们对替换运算符 ( s/.../.../) 感到困惑。我经常发现人们将整个运算符视为“正则表达式”。但它不是,它是一个带有两个参数(或操作数)的运算符。
第一个操作数(在第一个和第二个分隔符之间)被解释为一个正则表达式。第二个操作数(在第二个和第三个定界符之间)被解释为双引号字符串(当然,/e选项会稍微改变)。
所以替换操作如下所示:
s/REGEX/REPLACEMENT STRING/
正则表达式识别特殊字符,如^and+和\s。替换字符串没有。
如果人们不再误解替换运算符是如何构成的,他们可能不再期望正则表达式功能在正则表达式之外工作:-)