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

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

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

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

根据 Python 文档:

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

所以我尝试了:

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

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

【问题讨论】:

    标签: python regex python-2.7


    【解决方案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。
    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2013-09-13
    相关资源
    最近更新 更多