Q
正則表達式匹配
2
A
回答
3
因爲你在最後的方括號應該在括號內。 '人'將其與方括號中的'l'相匹配,但'人'在方括號中沒有字母。
如果你不想強制與.php或.html匹配,你應該用一個問號跟着它。
這裏是一個可能的修訂正則表達式:([0-9a-zA-Z_-]+)/?([^.\/]+)(.php|.html)?
>>> p='([0-9a-zA-Z_\-]+)/?([^.\/]+)(\.php|\.html)?'
>>> p=re.compile(p)
>>> p.match('person')
<_sre.SRE_Match object at 0x9bac0c0>
>>> p.match('people')
<_sre.SRE_Match object at 0x9bac2f0>
>>> p.match('people').group()
'people'
>>> p.match('person').group()
'person'
使用match.group()函數,或等值的您喜歡的語言,看看什麼是正則表達式的部分實際上是匹配。它可以非常有啓發性。
在意見修訂後的問題:
>>> p=re.compile('([0-9a-zA-Z_\-]+)(|\.html|\.php)$')
>>> p.match('ddd').group()
'ddd'
>>> p.match('ddd.html').group()
'ddd.html'
>>> p.match('ddd.jpeg').group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
相關問題
- 1. 正則表達式匹配
- 2. 正則表達式匹配
- 3. 正則表達式匹配%
- 4. 正則表達式匹配
- 5. 正則表達式匹配
- 6. 正則表達式 - 匹配
- 7. 正則表達式匹配
- 8. 匹配正則表達式
- 9. 正則表達式 - 匹配
- 10. 正則表達式匹配
- 11. 正則表達式匹配
- 12. 正則表達式匹配
- 13. 正則表達式匹配
- 14. 匹配正則表達式{
- 15. 正則表達式匹配
- 16. 正則表達式匹配「|」
- 17. 正則表達式匹配
- 18. 正則表達式匹配
- 19. 正則表達式匹配
- 20. 正則表達式:匹配
- 21. 正則表達式匹配@「*」
- 22. 匹配正則表達式
- 23. 正則表達式:匹配
- 24. 匹配正則表達式
- 25. 正則表達式匹配
- 26. 正則表達式匹配
- 27. 正則表達式匹配
- 28. .NET匹配正則表達式匹配
- 29. 正則表達式(正則表達式)模式匹配
- 30. 正則表達式匹配多表達
你能你在問什麼更清晰? – David 2011-04-21 00:03:16
我想他的意思是「爲什麼字符串'人'匹配和'人'不'」。 – 2011-04-21 00:09:19
...對不起,什麼?請嘗試一個完整的句子,作爲開始。 >。< – 2011-04-21 00:15:29