Python正则表达式:在字符范围内包含空格

7
我有一个正则表达式,可以匹配字母、数字、_和-(长度有最小值和最大值)。
^[a-zA-Z0-9_-]{3,100}$

我希望在这个字符集中包含空格。

根据 Python 文档:

字符类(例如\w或\S)也可以在集合中使用。

所以我尝试了:

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

但是它会出现坏的字符范围错误。我该如何在上述集合中包含空格?
3个回答

25

问题不在于 \s ,而在于 - 表示字符范围,除非它位于类的开头或结尾。请使用以下内容:

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

谢谢m.buettner。-的位置是问题所在。 - Nitish Parkar

3

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

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


感谢dda。问题确实是“-”符号的位置。 - Nitish Parkar

-1

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

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

1
抱歉给你点了踩,@david-lai。我认为这个答案不准确,因为它没有解决问题,尽管绕过了报告的错误。在我看来,删除你的答案可能会更好。 - Eric McLachlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接