在正则表达式中使用 '\s' 和实际空格之间的区别? [复制]
Posted
技术标签:
【中文标题】在正则表达式中使用 \'\\s\' 和实际空格之间的区别? [复制]【英文标题】:Difference between using '\s' and an actual space in regex? [duplicate]在正则表达式中使用 '\s' 和实际空格之间的区别? [复制] 【发布时间】:2018-05-25 13:58:38 【问题描述】:我有字符串id=0515 abcdefghijk
。为了只匹配0515
,我创建了以下正则表达式:((?<=id=).*(?<=\s))
。
我的结果是0515
(包括 id 和字母之间的空格)。
如果我将正则表达式更改为以下内容(将 '\s' 替换为实际空格),我会得到预期的结果,即末尾没有空格的数字:((?<=id=).*(?= ))
可以使用实际空格代替字符代码吗?还是我的正则表达式需要更多工作?
【问题讨论】:
是的,对于您的情况,空间有效。\s
匹配任何空格 character(空格、制表符、回车、换行...)
【参考方案1】:
区别在于专门匹配空格,而
\s
将匹配任何空白字符(\r
、\n
、\t
、\f
和\v
)。
虽然在正则表达式中使用空格并没有错,但考虑到您只是在寻找数字,为什么不简单地使用 \d
(匹配任何数字,0
到 9
)?
这将显着减少您的正则表达式,并获得相同的结果,如 here 所示。
希望这会有所帮助! :)
【讨论】:
我现在明白了这些差异,是有道理的。也不是所有时间都会有所有数字,否则使用/d
确实会是一种更简单的方法。谢谢。以上是关于在正则表达式中使用 '\s' 和实际空格之间的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章