Python regex:在字符范围内包括空格

Posted

技术标签:

【中文标题】Python regex:在字符范围内包括空格【英文标题】:Python regex: Including whitespace inside character range 【发布时间】:2012-10-19 23:54:12 【问题描述】:

我有一个匹配字母、数字、_ 和 - 的正则表达式(具有最小和最大长度)。

^[a-zA-Z0-9_-]3,100$

我想在这组字符中包含空格。

根据 Python 文档:

字符类,如 \w 或 \S 也可以在集合中接受。

所以我尝试了:

^[a-zA-Z0-9_-\s]3,100$

但它给出了错误的字符范围错误。如何在上述集合中包含空格?

【问题讨论】:

【参考方案1】:

问题不是\s,而是-,它表示一个字符范围,除非它位于类的末尾或开头。使用这个:

^[a-zA-Z0-9_\s-]3,100$

【讨论】:

感谢 m.buettner。 - 的位置是问题【参考方案2】:

^[-a-zA-Z0-9_\s]3,100

_-\s 被解释为一个范围。代表自身的破折号必须是 [...] 中的第一个或最后一个字符

【讨论】:

谢谢达。问题确实是 -【参考方案3】:

你在正确的轨道上,添加第二个反斜杠来转义斜杠,因为反斜杠是转义字符。

^[a-zA-Z0-9_\\-\\s]3,100$

【讨论】:

很抱歉投了反对票,@david-lai。我认为这个答案不准确,因为它不能解决问题;尽管解决了报告的错误。删除你的答案可能会更好,imo。

以上是关于Python regex:在字符范围内包括空格的主要内容,如果未能解决你的问题,请参考以下文章

javascript 删除所有特殊字符包括空格#regex #js

在 python 中使用 Regex 将 $$ 或更多替换为单个空格

求一个验证数字的正则表达式,只能数字通过验证,其他所有字符,包括空格都不能通过验证

python 字符串内建函数

python 字符串内建函数

RegEx 仅匹配数字和最多 3 个字符