【问题标题】:How to write a regular expression in Python that accepts alphabets, numbers and a few selected special characters(,.-|;!_?)?如何在 Python 中编写一个接受字母、数字和一些选定的特殊字符(,.-|;!_?)的正则表达式?
【发布时间】:2017-05-21 03:11:27
【问题描述】:

Python 中的正则表达式,它接受字母、数字和仅这些特殊字符 (,.-|;!_?)。

我尝试通过以下正则表达式解决问题,但没有成功:

'([a-zA-Z0-9,.-|;!_?])$'
'([a-zA-Z0-9][.-|;!_?])$'

谁能帮我写正则表达式。

【问题讨论】:

    标签: python pyramid colander


    【解决方案1】:

    试试这个(你应该像这个\-一样逃避-):

    ^[a-zA-Z0-9,.\-|;!_?]+$
    

    + 防止匹配空字符串,为了允许它们,你可以使用* 代替。

    示例:

    >>> import re
    >>> 
    >>> re.match('^[a-zA-Z0-9,.\-|;!_?]+$', '12.0')
    <_sre.SRE_Match object at 0x00000000027EB850>
    >>> re.match('^[a-zA-Z0-9,.\-|;!_?]+$', '')
    >>>
    >>> re.match('^[a-zA-Z0-9,.\-|;!_?]+$', 'test!?')
    <_sre.SRE_Match object at 0x00000000027EB7E8>
    

    【讨论】:

      【解决方案2】:

      仅用于一个字符:

      '[a-zA-Z0-9,.\-|;!_?]' or '[\w,.\-|;!_?]'
      

      将此用于所有字符:

      '[a-zA-Z0-9,.\-|;!_?]*' or '[\w,.\-|;!_?]*'
      

      使用它来进行相等检查:

      '^[a-zA-Z0-9,.\-|;!_?]*$' or '^[\w,.\-|;!_?]*$'
      

      【讨论】:

        【解决方案3】:

        您可以使用\w(奖励:Unicode 和语言环境支持!):

        匹配任何字母数字字符和下划线;这相当于集合 [a-zA-Z0-9_]

        Python's documentation。此外,您可能希望在指定正则表达式模式时使用原始字符串:

        m = re.match(r'[\w,.-|;!?]+', your_string)
        

        注意+ 的使用(重复一次或多次)。您还使用了$ 来匹配字符串的结尾,但我没有将它包含在我的字符串中。 YMMV。

        【讨论】:

          【解决方案4】:

          我认为以下应该有效(在 RegExr 上针对 Foo123,.-|;!_? 进行测试):

          ^[\w,.\-|;!_?]*$
          

          在您的正则表达式中,您忘记转义“-”字符,该字符被解释为要匹配的字符范围。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-01-23
            • 2016-12-14
            • 2013-04-04
            • 1970-01-01
            • 1970-01-01
            • 2011-11-01
            • 1970-01-01
            相关资源
            最近更新 更多