这是我的尝试
def matcher(ex):
if re.match(r'^[\w|\d][A-Za-z0-9_-]+$', ex):
print 'yes'
我的目标是仅匹配满足以下所有内容的提交
在我的正则表达式中,matcher('__')
被认为是有效的。如何修改以实现我真正想要的东西?我相信\w
也包括下划线。但matcher('_')
不匹配......
答案 0 :(得分:11)
def matcher(ex):
ex = ex.rstrip()
if re.match(r'^[a-zA-Z0-9][ A-Za-z0-9_-]*$', ex):
print 'yes'
原始正则表达式中的问题:
|
并不意味着在字符类中交替,它意味着字面上的管道字符。
您使用+
表示后面的字符,即一个或多个字符,因此'_'
之类的单字符字符串不匹配。
您在第一个字符中使用了\w
,该字符接受了下划线。