我试图匹配html文件中的所有JavaScript块。
目前我正在使用:
content = Regex.Replace(content, "<script.*type=\"text/javascript.*</script>", String.Empty);
content = Regex.Replace(content, @"<script\s*.*type=\'text/javascript\s*.*\s*</script>", String.Empty);
但是,例如,我无法匹配此字符串:
<script src="http://mediamond.js.ad.dotandad.com/MediamondAds.js" language="javascript" type="text/javascript" id=
"mediamondBaseJS"></script>
我错过了什么?
修改
我已经尝试了你的建议,这是一个更接近解决方案的步骤,但现在它太贪婪了(或者在行的开头</script>
可能会产生一些问题?)
我正在使用:
Regex.Match(content, @"<script[\s\S]*?type='text/javascript[\s\S]*?</script>", RegexOptions.Singleline).Value
我也尝试过行首^
但现在匹配太长(忽略第一个</script>
!):
<script type="text/javascript" language="javascript">
var mediamondAd=new MediamondAds();
mediamondAd.setTagPfx("br_fol_for_mi");
</script>
<!-- MEDIAMOND END -->
<div align="center" style="padding-top: 10px;"><script type='text/javascript'><!--// <![CDATA[
OA_show(26);
// ]]> --></script>
答案 0 :(得分:2)
点角色不符合换行符。您的html在language
属性和结束脚本标记之间有换行符。请考虑使用此代码:
<script[\s\S]*?type=\"text\/javascript[\s\S]*?</script>
\s = whitespaces (including line breaks)
\S = non-spaces
? = non-greedy so it stops looking when it gets the first type attribute / first closing </script> tag