字母,短划线,下划线,数字和空格的正则表达式

时间:2012-07-16 01:45:02

标签: python regex

这是我的尝试

def matcher(ex):
    if re.match(r'^[\w|\d][A-Za-z0-9_-]+$', ex):
        print 'yes'

我的目标是仅匹配满足以下所有内容的提交

  1. 仅以字母或数字开头,
  2. 仅允许使用字母,空格,短划线,下划线和数字
  3. 所有结束空格都被剥离
  4. 在我的正则表达式中,matcher('__')被认为是有效的。如何修改以实现我真正想要的东西?我相信\w也包括下划线。但matcher('_')不匹配......

1 个答案:

答案 0 :(得分:11)

def matcher(ex):
    ex = ex.rstrip()
    if re.match(r'^[a-zA-Z0-9][ A-Za-z0-9_-]*$', ex):
        print 'yes'

原始正则表达式中的问题:

  1. |并不意味着在字符类中交替,它意味着字面上的管道字符。

  2. 您使用+表示后面的字符,即一个或多个字符,因此'_'之类的单字符字符串不匹配。

  3. 您在第一个字符中使用了\w,该字符接受了下划线。