帮我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)
虽然没问题 但是跑起来 很慢。 哪位大神帮我优化一下 展开
中间的 “1” “浙江省。。法院” “网址” “名称(title)”"(2014)浙杭。。号" “2015-04-21”我用的是
case_odd = re.compile(r'<TR class=tdbgs_odd >.*?<.*?>(.*?)<.*?>.*?<.*?>(.*?)<.*?>.*?<.*?>.*?<.*?"(.*?)".*?"(.*?)".*?>.*?<.*?>.*?<.*?>.*?<.*?>(.*?)<.*?>.*?<.*?>(.*?).*?<.*?></TR>',re.DOTALL).findall(html)
虽然没问题 但是跑起来 很慢。 哪位大神帮我优化一下 展开
1个回答
展开全部
1.你要少用.*?这样的正则表达式。尽量少用。能不用就不用。这样可以更好维护,也不容易出错。可以用[^>]+这样的来代替。更健壮些。
2.另外不要在乎正则表达式的完美。你可以使用两次查找的办法解决,比一次查找复杂度降低很多。
3.另外也尽量不要用r''这样的形式。在正则表达式里容易让你误判 。
第一句就错了。正则表达式开始可使用(?isu)这样减少大小写与换行的限制。class=tdbgs_odd两边少了引号。其它的你慢慢找吧。
推荐一个工具,开源的,也是python写的正则验证工具。叫kodos。还有一个java写的工具RegexReplacer.jar,当然还有其它的工具,找一个工具。然后一段段调试。不对了就退回去一点。
很快就通了。练习几个月,你就可以写出基本无错,一次通过的正则表达式了。
2.另外不要在乎正则表达式的完美。你可以使用两次查找的办法解决,比一次查找复杂度降低很多。
3.另外也尽量不要用r''这样的形式。在正则表达式里容易让你误判 。
第一句就错了。正则表达式开始可使用(?isu)这样减少大小写与换行的限制。class=tdbgs_odd两边少了引号。其它的你慢慢找吧。
推荐一个工具,开源的,也是python写的正则验证工具。叫kodos。还有一个java写的工具RegexReplacer.jar,当然还有其它的工具,找一个工具。然后一段段调试。不对了就退回去一点。
很快就通了。练习几个月,你就可以写出基本无错,一次通过的正则表达式了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询