2012-03-21 89 views
0

嗨,我是新來的正則表達式。正則表達式不匹配的方式,我想

我有,我想匹配任何數量的A-Z的A-Z 0-9串 -

我試過在python以下和_但它總是匹配,甚至是空的空間。有人能告訴我爲什麼嗎?

re.match(r'[A-Za-z0-9_-]+', 'gfds9 41.-=,434') 
+2

它適用於我。 – WeaselFox 2012-03-21 13:26:54

+0

對我來說也很好(Python 2.7.1)。 – teukkam 2012-03-21 13:28:53

+0

假設它應該匹配「gfds9」,在Python 2.7.2上工作正常。 – Griwes 2012-03-21 13:30:48

回答

4

您的正則表達式匹配一個或多個這些字符。您的文字從一個或多個這些字符開始,因此它匹配。如果你想要它只有匹配這些字符,那麼你必須匹配他們從文本的開始到結尾。

re.match(r'^[A-Za-z0-9_-]+$', 'gfds9 41.-=,434') 
+0

+1,我打算寫相同的。 – 2012-03-21 13:29:00

+0

完美,謝謝! – zentenk 2012-03-21 14:23:33

0

嘗試替代它,也許它會爲你工作:

[\w-]+ 

編輯:

雖然您最初提供的正則表達式也爲我工作。