1

私はWgetを使用して、新しいプラットフォームに移行するためのサイトをスクレイプしました。ページをクリーンアップして、ページ内のすべてのビューステートコードを削除しようとしています。これを行うために、次の正規表現を使用しています。

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

これは、dreamweaverなどのプログラムで機能します。私はWildEditと呼ばれる別のアプリケーションを使用するのが好きです。これは、検索と多数のファイルの置換に非常に高速です。同じ式を使用すると、ページの最後の式と一致し、/>多くの適切なコードが削除されます。私も<input type="hidden" name="__VIEWSTATE" value=.*/>$ 同じ結果で試しました。

/>の最初の一致に保つためにこれをどのように制約しますか

4

2 に答える 2

0

正規表現は貪欲すぎます。これを試して:

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

デフォルトでは、正規表現エンジンは可能な限り多くの一致を作成しようとします。たとえば、正規表現a.*zaz (some other middle stuff) az1つの大きな一致として一致します。これは、正規表現で始まり、aで終わるためzです。

?修飾子は、正規表現エンジンに、貪欲ではなく怠惰になるように指示します。可能な限り最大の一致を取得する代わりに、最小のを取得します。前の例では、正規表現は怠惰であるためa.*?z、2つのサブ文字列に一致します。が表示されると、停止します。azz

于 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 に答える