我必須逐行讀取文本文件,並提取每行的一部分。如果我正在閱讀的文章的格式是預期的格式,我有一個工作代碼,但情況並非總是如此。文件中有錯誤,即一些缺少的信息或字符。所以我想跳過這些錯誤的路線。爲此,我想利用regular expression
模塊。我定義了我需要的正則表達式。可以說,reg_exp_string
將與我讀的行相匹配。我想要一個完整的匹配,我不想搜索文本的某些部分。如果完全匹配返回true,否則返回false。想的是,我試過re.match()
,它返回一個對象。我無法弄清楚。什麼是使用它的正確方法?如果字符串的某些部分與正則表達式匹配,它總是返回一個對象。我只想要一個完整的匹配並得到一個布爾值的答案。我怎樣才能做到這一點?python正則表達式模塊
回答
正如documentation提到,$
一個字符串的結尾相匹配。你可以修改你的正則表達式在最後包含$
。例如:
match_this = "abc12a" #expression you would like to match
dont_match_this = "abc12a9" #expression that returns partial matches from re.match
舊的正則表達式匹配都match_this
和dont_match_this
:
old_reg_expr = "[a-z]+\d[a-z]+"
新的正則表達式中包含$
如果字符串表達式匹配的最後一個元素結束後只返回匹配:
new_reg_expr = "[a-z]+\d[a-z]+$"
另外,你可以讓你的舊正則表達式保持完整,只是切看CK,如果本場比賽的結束位置等於字符串的結尾:
>>> m = re.match("[a-z]+\d[a-z]+", "abc12a9")
>>> m.end() == m.endpos
False
匹配對象的文檔是a little further down。
如圖http://docs.python.org/library/re.html記載,匹配()將返回一個MatchObject是找到一個匹配,否則無。
所以,簡單地說:
for line in ... :
m = your_regexp.match(line)
if m:
process(line)
如果它在開頭匹配,它會返回一個對象,但是,我需要的是全文匹配。 –
@gokhan_ufl:你可以檢查'match.end()== match.endpos'是否確保匹配整個字符串。 –
謝謝。這是我正在尋找的。其實答案比「閱讀本文」短。這真的很有幫助。我猜這是關鍵因素。幫助他人。 –
- 1. Python正則表達式模塊中的遞歸正則表達式?
- 2. Python的正則表達式:「喜歡」正則表達式模式?
- 3. 用Python正則表達式編譯模糊正則表達式
- 4. 代碼塊的Python正則表達式?
- 5. Python正則表達式 - 模式匹配
- 6. Python正則表達式模式
- 7. python正則表達式搜索模式
- 8. Python正則表達式模式建議
- 9. Python的正則表達式模塊VS重新模塊 - 模式不匹配
- 10. 與pypy正則表達式模塊
- 11. 正則表達式正則表達式正則表達式使用正則表達式,但不是與Python
- 12. 正則表達式正則表達式模仿正則表達式
- 13. .NET正則表達式 - 塊'%'
- 14. 正則表達式python表達式
- 15. 正則表達式使用python re模塊的分數數學表達式
- 16. 正則表達式模式
- 17. 正則表達式 - 模式
- 18. 正則表達式模式$
- 19. 正則表達式模式
- 20. 正則表達式模式
- 21. 正則表達式模式
- 22. 正則表達式模式
- 23. 奇怪的Python行爲與正則表達式模塊
- 24. 正則表達式模塊python提取內容
- 25. 多行正則表達式使用Python請求模塊
- 26. 新的正則表達式模塊函數錯誤值。 Python
- 27. Nintex正則表達式模式正則表達式
- 28. 設置從正則表達式模式到正則表達式?
- 29. 正則表達式(正則表達式)模式匹配
- 30. Python正則表達式子
正則表達式教程/如何到http://docs.python.org/howto/regex.html – Levon
有你閱讀文檔? http://docs.python.org/library/re.html – Riking
這個問題完全沒有顯示OP的研究工作。 http://meta.stackexchange.com/a/128553 –