1

これを照合して、これらのタグから値を抽出する必要があります。問題は、それらが動的に生成され、ページが更新されるたびに誰かが物事を切り替えることにしたことです。

したがって、タグは次のようになります。

<input type="hidden" value="838218230" name="vstablepid_2717_1State">

またはこれ:

<input type="hidden" name="vstablepid_2717_1State" value="838218230" >

私は次のようなもので、それぞれを別々に行うことができます:

value="(.+?)".*"vstable

両方にできるステートメントが1つありますか?


これまでのアイデア:

ある種のオプションの構文を使用すると、値の前または後のいずれかに一致する「vstable」を見つけることができますが、それでも行で少なくとも1つの「vstable」を見つける必要があります。

4

3 に答える 3

2

先読みを使用して主張しvstable、(グループから)コンテンツを取得します。

<(?=[^>]*vstable[^>]*>)[^>]*value="(.*?)"[^>]*>

正規表現の先読み部分では、次の前に表示する(?=...)必要がありますvstable>

于 2012-05-23T00:29:40.267 に答える
1

or両方のステートメントを一緒にすることはできませんか?

(?:value="(.+?)".*"vstable)|(?:"vstable.*?value="(.+?)")

それとも私は何かが足りないのですか?

編集:この方法には注意が必要です。値が最初のキャプチャグループに表示される場合と、2番目のキャプチャグループに表示される場合があります。ボヘミアンの答えは、この点で(また)より良いです。

于 2012-05-23T00:26:25.670 に答える
0

現在の正規表現:

value="(.+?)".*"vstable 

vstableの後に発生する事実を強制していますvalue

あなたは単にその部分を取り出して、それを次のようにすることができます:

value="(.+?)"  

ほとんどの正規表現コンパイラで.+?は、貪欲ではなく、終了引用符に達すると一致を停止します"。そうすれば、どこvalueで発生しても、それがピックアップされます。

valueしかし、それはあなたの必要性と、あなたが具体的に発生する行でを選びたいかどうかに依存しますが、vstableそれは質問で指定されていなかったので、私は一般的な答えを与えています。

于 2012-05-23T00:31:22.403 に答える