我有字符串id=0515 abcdefghijk
。为了仅匹配0515
,我创建了以下正则表达式:((?<=id=).*(?<=\s))
。
我的结果是0515
(包含id和字母之间的空格)。
如果我将正则表达式更改为以下内容(将'\ s'替换为实际空格),我得到的结果只是最后没有空格的数字:((?<=id=).*(?= ))
是否可以使用实际空格而不是字符代码?或者我的正则表达式需要更多的工作吗?
答案 0 :(得分:5)
区别在于专门与空格匹配,而
\s
将匹配任何空白字符(\r
,\n
,\t
,{{1 }和\f
)。
虽然在正则表达式中使用空格没有任何问题,但考虑到您只是在查找数字,为什么不简单地使用\v
(匹配任何数字,\d
到{{1} })?
这将显着降低您的正则表达式,并获得相同的结果,如 here 。
希望这有帮助! :)