perl-regex-find&;代替

perl-regex-find&;代替,regex,perl,replace,Regex,Perl,Replace,我正在尝试删除4k+网页上的一些垃圾js代码。网页上也有其他的js,所以我只需要使用一个叫做clickIE的特殊功能来摆脱js 在我引入正则表达式之前,这一行程序一直在运行 perl -p -i -e 's|<script(.*)>.*clickie.*?<\/script>|<\!--REMOVED-JS-CODE-->|gixsm' ./*.html perl-p-i-e的|.*clickie.*?| | gixsm./*.html 我的正则表达式在进

我正在尝试删除4k+网页上的一些垃圾js代码。网页上也有其他的js,所以我只需要使用一个叫做clickIE的特殊功能来摆脱js

在我引入正则表达式之前,这一行程序一直在运行

perl -p -i -e 's|<script(.*)>.*clickie.*?<\/script>|<\!--REMOVED-JS-CODE-->|gixsm' ./*.html
perl-p-i-e的|.*clickie.*?| | gixsm./*.html

我的正则表达式在进行测试时工作正常,但在命令行上失败…(失败意味着…正则表达式不匹配任何内容)

如@Mark所述,匹配项应该是非贪婪的。这似乎有效

perl -i -p -e 's|<script.*?>.*?clickie.*?</script>|<!-- removed -->|gism'
perl-i-p-e的|.*?clickie.| | gism'

如@Mark所述,匹配项应该是非贪婪的。这似乎有效

perl -i -p -e 's|<script.*?>.*?clickie.*?</script>|<!-- removed -->|gism'
perl-i-p-e的|.*?clickie.| | gism'

要使正则表达式正常工作,需要立即插入整个文件

$ perl -0777 -pi -e 's/your/regex/gix' ./*.html

要使正则表达式正常工作,需要立即插入整个文件

$ perl -0777 -pi -e 's/your/regex/gix' ./*.html

为什么要使用贪婪匹配而不是懒惰匹配?你说的“失败”具体是什么意思?@MarkByers你的建议把它收紧了。谢谢它的工作刚刚好,当我测试它在。当我从命令行运行它时,它不会进行替换
perl-p-i-e的|.*?clickie.*?| | gixsm./*.html
这将跳过
console.log(“clickie”)
。诚然,你不太可能在你所查看的资料中的任何地方找到“clickie”,但在一般情况下,这种可能性可能较小。要安全地解决这个问题,需要使用javascript解析器只查找目标字符串用作函数名的情况,这是一个比较困难的问题。为什么要使用贪婪匹配而不是惰性匹配?你说的“失败”具体是什么意思?@MarkByers你的建议把它收紧了。谢谢它的工作刚刚好,当我测试它在。当我从命令行运行它时,它不会进行替换
perl-p-i-e的|.*?clickie.*?| | gixsm./*.html
这将跳过
console.log(“clickie”)
。诚然,你不太可能在你所查看的资料中的任何地方找到“clickie”,但在一般情况下,这种可能性可能较小。要安全地解决这个问题,需要使用javascript解析器只查找目标字符串用作函数名的情况,这是一个比较困难的问题。+1再次以我将要建议的确切解决方案将我挫败了1分钟=P不过,您可能需要保留这些标志。@TLP:总有一种方法可以做到这一点;)+我又一次以1分钟的时间挫败了我,这是我要提出的确切解决方案=P不过,您可能需要保留这些标志。@TLP:总有一种方法可以做到这一点;)