我很难在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