def matcher(ex):
if re.match(r'^[\w|\d][A-Za-z0-9_-]+$', ex):
print 'yes'
我的目标是一致只有满足所有以下
- 开始只有一个字母提交或数字,并且
- 只允许字母,空格,短划线,下划线和数字数字
- 所有结束空格都被剥离
在我的正则表达式中,matcher('__')
被认为是有效的。我如何修改以达到我真正想要的?我相信\w
还包含下划线。但matcher('_')
不匹配......
def matcher(ex):
if re.match(r'^[\w|\d][A-Za-z0-9_-]+$', ex):
print 'yes'
我的目标是一致只有满足所有以下
在我的正则表达式中,matcher('__')
被认为是有效的。我如何修改以达到我真正想要的?我相信\w
还包含下划线。但matcher('_')
不匹配......
def matcher(ex):
ex = ex.rstrip()
if re.match(r'^[a-zA-Z0-9][ A-Za-z0-9_-]*$', ex):
print 'yes'
问题在原始的正则表达式:
|
并不意味着在字符类交替,它意味着一个管道字符字面。
您对以下字符使用了+
,表示一个或多个字符,因此像'_'
这样的单字符字符串不匹配。
您在接受下划线的第一个字符中使用了\w
。
...在第二个子句中需要空格 – 2012-07-16 01:49:47
我添加了空格,谢谢。 – 2012-07-16 01:51:17
还要剥离结束空格,只需使用'mystring.rstrip()'而不是正则表达式。 – 2012-07-16 01:51:23
'\ w'是'[0-9A-Za-z_]',你的正则表达式至少有2个字符。 – nhahtdh 2012-07-16 01:49:38
@nhahtdh啊......我没有意识到这一点。谢谢。 – user1012451 2012-07-16 01:51:43