我使用Wget来抓取一个站点以迁移到新平台。我正在尝试清理页面并删除其中的所有视图状态代码。我使用以下正则表达式来执行此操作:
<input type="hidden" name="__VIEWSTATE" value=.*/>
这适用于Dreamweaver等程序。我喜欢使用另一个名为Wild Edit的应用程序,它非常快速地搜索和替换大量文件。当我使用相同的表达式时,它将与页面上的最后一个/>
匹配,删除很多好的代码。我也试过<input type="hidden" name="__VIEWSTATE" value=.*/>$
同样的结果。
我如何约束这一点以使其保持在/&gt;
的第一场比赛答案 0 :(得分:0)
正则表达式过于贪婪。试试这个:
<input type="hidden" name="__VIEWSTATE" value=.*?/>
默认情况下,正则表达式引擎会尝试尽可能多地进行匹配。例如,正则表达式a.*z
将匹配az (some other middle stuff) az
作为一个大匹配,因为, 以a
开头并以{{1}结尾}。
z
修饰符告诉正则表达式引擎,而不是贪婪,是懒惰的:而不是抓住最大的可能匹配,抓住最小 。在上一个示例中,正则表达式?
将匹配2个a.*?z
子字符串,因为它是懒惰的:一旦看到az
,它就会停止。
答案 1 :(得分:0)
尝试
<input type="hidden" name="__VIEWSTATE" value=.*?/>
?
,如果支持则会使搜索无效,因此它只会匹配第一个 />
而不是最后一个。
如果这不起作用,最好的选择可能是:
<input type="hidden" name="__VIEWSTATE" value=[^/]+/>