在正则表达式中,使用'\s'和实际空格有什么区别?

11
我有一个字符串id=0515 abcdefghijk。为了只匹配0515,我创建了以下正则表达式:((?<=id=).*(?<=\s))

我的结果是0515(包括 id 和字母之间的空格)。

如果我将正则表达式更改为以下内容(用实际的空格代替 '\s'),则可以得到我想要的结果,即没有结尾空格的数字:((?<=id=).*(?= ))

使用实际的空格而不是字符代码可以吗?还是我的正则表达式需要更改?


2
是的,对于您的情况,空格可以使用。\s匹配任何空白字符字符(空格、制表符、回车、换行符...)。 - Taku
1个回答

19
区别在于 仅匹配一个空格,而 \s 则匹配任何空白字符(\r\n\t\f\v)。
虽然在正则表达式中使用空格并没有问题,但考虑到你只需要查找数字,为什么不直接使用 \d(匹配任何数字,从 09)呢?
这将大大简化你的正则表达式,并实现相同的结果,可以在此处查看:链接
希望对你有所帮助! :)

我现在理解了它们的区别,很有道理。而且并不是所有时候ID都只包含数字,否则使用“/d”确实会更简单。谢谢。 - Kervvv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接