帮我python 正则语法的优化

我是想要查找:中间的“1”“浙江省。。法院”“网址”“名称(title)”"(2014)浙杭。。号"“2015-04-21”我用的是case_odd=re.compile... 我是想要查找:

中间的 “1” “浙江省。。法院” “网址” “名称(title)”"(2014)浙杭。。号" “2015-04-21”我用的是
case_odd = re.compile(r'<TR class=tdbgs_odd >.*?<.*?>(.*?)<.*?>.*?<.*?>(.*?)<.*?>.*?<.*?>.*?<.*?"(.*?)".*?"(.*?)".*?>.*?<.*?>.*?<.*?>.*?<.*?>(.*?)<.*?>.*?<.*?>(.*?).*?<.*?></TR>',re.DOTALL).findall(html)

虽然没问题 但是跑起来 很慢。 哪位大神帮我优化一下
展开
 我来答
bdwisyou7d
2015-08-06 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1085万
展开全部
1.你要少用.*?这样的正则表达式。尽量少用。能不用就不用。这样可以更好维护,也不容易出错。可以用[^>]+这样的来代替。更健壮些。
2.另外不要在乎正则表达式的完美。你可以使用两次查找的办法解决,比一次查找复杂度降低很多。

3.另外也尽量不要用r''这样的形式。在正则表达式里容易让你误判 。

第一句就错了。正则表达式开始可使用(?isu)这样减少大小写与换行的限制。class=tdbgs_odd两边少了引号。其它的你慢慢找吧。
推荐一个工具,开源的,也是python写的正则验证工具。叫kodos。还有一个java写的工具RegexReplacer.jar,当然还有其它的工具,找一个工具。然后一段段调试。不对了就退回去一点。
很快就通了。练习几个月,你就可以写出基本无错,一次通过的正则表达式了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式