我很難在python中找到文件的開始和結束的正則表達式。 我該如何做到這一點?使用正則表達式在python中匹配文件的開始和結束
回答
也許你應該更清楚地提出你的問題,就像你想要做的一樣。也就是說,你可以將文件整理成一個整個字符串,並使用re匹配你的模式。
import re
data=open("file").read()
pat=re.compile("^.*pattern.*$",re.M|re.DOTALL)
print pat.findall(data)
有沒有更好的方法來做你想做的,不管它是什麼,沒有。
因爲。*是貪婪的,只會在文件中找到'pattern'的一個實例。由於您指定了re.M標誌,所以$在文件中的每一個換行符之前匹配,所以使用greedy。*和re.DOTALL時,第一個。*將匹配文件中最後一個「模式」之前的所有內容,第二個將會匹配匹配最後一個'模式'後的所有內容。無論如何, – 2010-03-02 12:44:49
。這不是一個完整的解決方案,因爲我們不確定OP真正想做什麼。我能做的最好的就是告訴他他可以將整個文件作爲字符串讀取,並像正常字符串一樣對其執行正則表達式。 – ghostdog74 2010-03-02 12:55:07
正則表達式$
是不是你的朋友;請參閱this SO answer
將整個文件讀入一個字符串,然後\ A只匹配字符串的開頭,而\ Z只匹配字符串的結尾。使用re.MULTILINE,'^'匹配換行符後面的字符串和的開頭,'$'匹配換行符前面的字符串和的末尾。請參閱re syntax的Python文檔。
import re
data = '''sentence one.
sentence two.
a bad sentence
sentence three.
sentence four.'''
# find lines ending in a period
print re.findall(r'^.*\.$',data,re.MULTILINE)
# match if the first line ends in a period
print re.findall(r'\A^.*\.$',data,re.MULTILINE)
# match if the last line ends in a period.
print re.findall(r'^.*\.$\Z',data,re.MULTILINE)
輸出:
['sentence one.', 'sentence two.', 'sentence three.', 'sentence four.']
['sentence one.']
['sentence four.']
- 1. Python正則表達式,匹配組跨度(開始和結束)
- 2. 如何在Python的正則表達式中匹配開始和結束?
- 3. 正則表達式匹配不是行的開始/結束
- 4. 使用正則表達式匹配字符串的開始和結束字符
- 5. 正則表達式中的python基於匹配的文件名的開始和結束組文件
- 6. 正則表達式模式匹配:僅使用模式的開始和結束進行匹配
- 7. 如何使用正則表達式匹配從開始到結束的塊
- 8. Python文件正則表達式匹配
- 9. 匹配正則表達式僅在字符串的開始/結束處
- 10. 開始,在Python正則表達式結束標誌
- 11. 如何匹配文件結束與正則表達式
- 12. 如何使用python熊貓數據框找到正則表達式匹配的開始和結束?
- 13. 在Python中使用正則表達式匹配嵌套結構
- 14. 使用Ruby中的正則表達式匹配特定的開始和結束字符模式
- 15. 正則表達式匹配一個字符串與特定的開始/結束
- 16. PHP的正則表達式:匹配結束 - &和&
- 17. 正則表達式開始的字符串[和結束]
- 18. 正則表達式 - 在Javascript中匹配部分文本的開始和結束部分
- 19. 用正則表達式不匹配,在結束
- 20. 在開始或結束文件中發生回車的正則表達式
- 21. 匹配在一個文本文件中使用正則表達式使用python
- 22. 正則表達式匹配的文件
- 23. 使用libC++正則表達式庫(C++ 11)匹配「開始行」
- 24. 在Google測試的ASSERT_DEATH正則表達式匹配結束符
- 25. 在javascript中插入正則表達式結果的開始和結束字符
- 26. 正則表達式開始和結束與
- 27. 正則表達式來移除支架開始和結束
- 28. 正則表達式 - 從開始和行結束微調空白
- 29. 正則表達式開始和結束字符(preg_replace)
- 30. 正則表達式來刪除開始和結束字符串
正則表達式應用到字符串,而不是文件。 – MattH 2010-03-02 10:45:28