在正则表达式中使用 '\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(匹配任何数字,09)?

这将显着减少您的正则表达式,并获得相同的结果,如 here 所示。

希望这会有所帮助! :)

【讨论】:

我现在明白了这些差异,是有道理的。也不是所有时间都会有所有数字,否则使用/d 确实会是一种更简单的方法。谢谢。

以上是关于在正则表达式中使用 '\s' 和实际空格之间的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式() [] {}区别