|
|
1
8
首先,使用为此构建的HTML解析器,如BeautifulSoup: http://www.crummy.com/software/BeautifulSoup/ 然后,您可以使用探查器识别剩余的特定慢点: http://docs.python.org/library/profile.html 对于学习正则表达式,我发现掌握正则表达式非常有价值,无论编程语言是什么: http://oreilly.com/catalog/9781565922570 也: |
|
|
2
5
每个文件都要处理五次,所以第一件事(正如paulsanwald所说)是通过组合regex来减少这个数量。我也会避免使用不情愿的量词,这些量词的设计是为了方便而牺牲效率。考虑一下这个正则表达式:
每次
但我们知道如果下一个角色是
当我用这个目标字符串在RegexBuddy中测试它们时:
……不情愿的正则表达式需要173步才能匹配,而定制的正则表达式只需要28步。 将前三个regex合并为一个会产生以下结果:
你可能想把
我不知道你在用第四个正则表达式对字符实体做什么——你是不是也删除了那些?我猜第五个regex必须单独运行,因为它清理的一些空白是由前面的步骤生成的。但尝试将前三个正则表达式组合在一起,看看会有多大的不同。这会告诉你是否值得继续采用这种方法。 |
|
|
3
1
可以做的一件事是使用反向引用组合脚本/样式正则表达式。以下是一些示例数据:
使用perl:
它将匹配脚本或样式。我支持推荐的“掌握正则表达式”,这是一本很好的书。 |
|
|
4
1
如果您的用例确实要为数百万个文档中的每一个解析一些内容,那么我上面的答案将不会有帮助。我推荐一些启发式的方法,比如在它们上面做一对“纯文本”正则表达式,就像纯文本一样
|
|
5
0
建议使用HTML解析器是一个很好的建议,因为它可能比正则表达式更快。但是我不确定beauthoulsoup是否适合这个工作,因为它从整个文件构造一个解析树并将整个内容存储在内存中。对于一TB的HTML,您需要一个淫秽的RAM来实现这一点;-)我建议您看看
|
|
|
6
0
|