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