我正在做RegexOne正则表达式教程,其中有一个问题是编写一个正则表达式来删除不必要的空格。
教程中提供的解决方案是:
我们可以通过在行内未捕获前导和尾随空格来跳过所有起始和结束空格。例如,表达式
^\s*(.*)\s*$
只会匹配内容。
问题的设置确实指示了在开头使用字符^和在结尾使用美元符号$,因此这个表达式是他们想要的:
我们先前已经看到如何使用插入符号^和美元符号$分别匹配完整的文本行。当与空格\s一起使用时,你可以轻松地跳过所有前导和尾随空格。
话虽如此,使用\S
代替,我能够想出一个看起来更简单的解决方案- (\S.*\S)
。
我找到了与教程中匹配的Stack Overflow解决方案 - Regex Email - Ignore leading and trailing spaces?,我也看到其他指南推荐相同的格式,但我很难找到为什么\S
是不好的解释。
\S
匹配才能进行匹配。 - jasonharper