gpt4 book ai didi

javascript - python中的正则表达式用于过滤JS代码

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:11 26 4
gpt4 key购买 nike

我是 python 新手,我想使用正则表达式过滤 html 标签。我使用的功能如下:

  def filter_tags(htmlstr):
re_cdata=re.compile('//<!\[CDATA\[.*//\]\]>',re.DOTALL)
re_script=re.compile('<\s*script[^>]*>[^<]*<\s*/\s*script\s*>',re.DOTALL)#Script
re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I)#style
re_br=re.compile('<br\s*?/?>')
re_h=re.compile('</?\w+[^>]*>')
re_function = re.compile('')
re_comment=re.compile('<!--[^>]*-->')
s=re_cdata.sub('',htmlstr)
s=re_script.sub('',s)
s=re_style.sub('',s)
s=re_br.sub('',s)
s=re_h.sub('',s)
s=re_comment.sub('',s)
s = re.sub('\\t','',s)
s = re.sub(' ','',s)
return s

除了一些js函数之外,大多数标签和代码都可以删除,我遇到了一些这样的麻烦:

(function(){
NTES.ajax.importJs('http://news.163.com/special/hot_tags_recommend_data/',function(){
varname1,name2,len1,len2,width1,width2,left2;
varloveData=['拎婚房待嫁北京爷们','请网友鉴定是否美女'];
if(hotTagsData.count&&hotTagsData.count>0){
varcode='#from=article',
html=[],
item={name:'',url:''};
for(vari=0;i<hotTagsData.data.length&&i<4;i++){
item=hotTagsData.data[i];
html.push(''+item.name+'');
if(i==1){name1=item.name;}
if(i==2){name2=item.name;}
}
html.push(loveData[0]);
html.push(loveData[1]);
NTES('#js-extraTagList').innerHTML=html.join('');
len1=name1.replace(/[^\x00-\xff]/gi,"aa").length;
len2=name2.replace(/[^\x00-\xff]/gi,"aa").length;
width1=Math.floor((len1/(len1+len2))*271);
width2=271-width1;
left2=96+width1+19;
NTES('.extra-tag-1').addCss('width:'+width1+'px');
NTES('.extra-tag-2').addCss('width:'+width2+'px;left:'+left2+'px;');
}
},'gbk');
})();

正如你所看到的,类似这样的函数有很多,那么如何使用正则表达式删除这些函数呢?非常感谢。

最佳答案

您的正则表达式:<\s*script[^>]*>[^<]*<\s*/\s*script\s*>不应该有[^<]* 。您应该保留它仅用于匹配标签本身。相反,您应该使用非贪婪 * ,通常在语法上表示为:*?所以它看起来像 <\s*script[^>]*>.*?<\s*/\s*script\s*> 。您应该在任何地方进行更改,包括样式标签和评论正则表达式。

这应该可以解决大多数情况。但是,它仍然无法保护您免受包含 '</script>' 字符串的标签的侵害。 ,尽管这种情况应该很少见。这种情况很可能很少见,如果出现这种情况,您可以手动将其删除。

关于javascript - python中的正则表达式用于过滤JS代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33241284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com