Regex 将正则表达式搜索保持在一行

Regex 将正则表达式搜索保持在一行,regex,Regex,我使用Wget抓取一个站点,以便迁移到新平台。我正在尝试清理页面并删除其中的所有viewstate代码。我使用以下正则表达式来执行此操作: <input type="hidden" name="__VIEWSTATE" value=.*/> 这在dreamweaver之类的程序中有效。我喜欢使用另一个名为Wild Edit的应用程序,它可以非常快速地搜索和替换大量文件。当我使用相同的表达式时,它将与页面上的最后一个/>匹配,并删除许多好代码。我也试过$,结果也一样 我如何约束它以使

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

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


我如何约束它以使其保持在/>

的第一个匹配项中正则表达式太贪婪了。试试这个:

<input type="hidden" name="__VIEWSTATE" value=.*?/>
默认情况下,正则表达式引擎会尝试使匹配尽可能大。例如,正则表达式a.*z将与其他中间元素az匹配为一个大匹配,因为它确实以a开头,以z结尾

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

试试看

<input type="hidden" name="__VIEWSTATE" value=.*?/>
<input type="hidden" name="__VIEWSTATE" value=[^/]+/>