2011-01-12 9 views
0

これは単純なものかもしれませんが、私はその答えを見つけることができません。PCRE正規表現を書いて、異なる内容の文字列を見つける方法は?

私は私が探していますHTMLファイル内の文字列があります:$名がどこにある

<div class="button" onclick="document.$name.submit(); return false\">Save</div> 

は、コードによって生成されるので、何もすることができます。

文字列の$ nameセクションを無視してファイル内にこの文字列を見つけるPCRE正規表現を記述する必要があります。

私はこれを試してみました:

/<div class=\"button\" document.(.+?).submit\(\); return false\">Save<\/div>/ 

それは$名であるものに等しいグループを返します。それは私が必要とする一致として定義しません。

答えて

1

次は動作するはずです:

/<div class="button" onclick="document\.(.+?)\.submit\(\); return false">Save<\/div>/ 

ほとんどの場合、あなたの問題は、あなたがsubmit()後に括弧をエスケープするのを忘れたということでしたので、submit;と一致することを試みました。

+0

をお試しくださいこれは$ nameにあるもののグループを返しますが、それには一致しません。 – jazzjazzy

+0

その文字列が 'document.buttonform.submit()'だった場合、一致するものは得られませんでしたが、 'buttonform'という値を持つグループを持っていますphpunits expectOutputRegex()を使用して一致する結果を探しています – jazzjazzy

+0

expectOutputRegexがpreg_match()が0より多くを返すかどうかを基本的にチェックするassertRegexp()を内部的に使用するようにしてください。これはうまくいくはずですが、ここで試してみましたが、php5.3.0が正規表現で ';'お試しください。の代わりに ; (私は上記の正規表現を更新しました) – Seldaek

0

これは私が探しています何の一種である...しかし!この

@<div class="button" onclick="document.(.*?).submit\(\); return false">Save</div>@ 
+0

これはマッチするなら、リテラル '.'をエスケープし、'。(?+?) ' – jasonbar

関連する問題