1

我使用 Wget 抓取了一个网站以迁移到新平台。我正在尝试清理页面并删除其中的所有视图状态代码。我正在使用以下正则表达式来执行此操作:

<input type="hidden" name="__VIEWSTATE" value=.*/>

这适用于 Dreamweaver 等程序。我喜欢使用另一个名为 Wild Edit 的应用程序,它可以非常快速地搜索和替换大量文件。当我使用相同的表达式时,它将匹配/>页面上的最后一个,删除很多好的代码。我也尝试<input type="hidden" name="__VIEWSTATE" value=.*/>$ 过同样的结果。

我将如何限制它以使其保持在 /> 的第一场比赛

4

2 回答 2

0

正则表达式太贪心了。试试这个:

<input type="hidden" name="__VIEWSTATE" value=.*?/>

默认情况下,正则表达式引擎尝试使匹配尽可能大。例如,正则表达式a.*zaz (some other middle stuff) az作为一个大匹配进行匹配,因为它确实以 .开头a和结尾z

?修饰符告诉正则表达式引擎不要贪婪,而要偷懒:不要抓取最大可能的匹配项,而是抓取最小的. 在前面的示例中,正则表达式a.*?z将只匹配 2az个子字符串,因为它是惰性的:一旦它看到z,它就会停止。

于 2013-02-07T20:36:26.543 回答
0

尝试

<input type="hidden" name="__VIEWSTATE" value=.*?/>

,?如果支持它会使搜索变得不贪婪,因此它只会匹配到第一个 />而不是最后一个。

如果这不起作用,您最好的选择可能是:

<input type="hidden" name="__VIEWSTATE" value=[^/]+/>
于 2013-02-07T20:36:26.943 回答