在正则表达式中使用'\ s'和实际空格之间的区别?

时间:2017-12-11 23:37:44

标签: regex

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

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

如果我将正则表达式更改为以下内容(将'\ s'替换为实际空格),我得到的结果只是最后没有空格的数字:((?<=id=).*(?= ))

是否可以使用实际空格而不是字符代码?或者我的正则表达式需要更多的工作吗?

1 个答案:

答案 0 :(得分:5)

区别在于专门与空格匹配,而\s将匹配任何空白字符(\r\n\t,{{1 }和\f)。

虽然在正则表达式中使用空格没有任何问题,但考虑到您只是在查找数字,为什么不简单地使用\v(匹配任何数字,\d到{{1} })?

这将显着降低您的正则表达式,并获得相同的结果,如 here

希望这有帮助! :)