我想用这个正则表达式从多行字符串中删除前导和尾随空格:
s/^\s*|\s*$//mg
在这个例子中,它似乎运行得相当正常:
perl -e '$_=" a \n \n b\n"; s/^\s*|\s*$//mg; print "$_\n";'
它会给出以下结果:
a
b
出乎我的意料之外,带有空格的双重 \n 变成了单个 \n。
但是看看这个:
perl -e '$_=" a \n\n b\n"; s/^\s*|\s*$//mg; print "$_\n";'
result:
ab
现在两个换行符都消失了,多行字符串变成了单行,这不是我想要的结果。如果这不是一个 bug,我该如何避免这种行为?
\s
匹配包括换行符在内的所有空白字符,请使用\h
代替。 - anubhavas/\A\s*|\s*\z//g
。 - Sundeep-Mre=debug
以获取有关正则表达式的调试信息,然后比较两个不同字符串的交互方式。 - TLP