1

これは私の文字列です:

<link href="/post?page=4&amp;tags=example" rel="last" title="Last Page">

そこから、次の正規表現を使用し4て、そのパラメーターから取得しようとしています。page

link href="/post?page=(.*?)&amp;tags=(.*?)" rel="last"

次に、最初のグループから 4 つを収集します。内容が変更される可能性があるため、tags パラメーターにはワイルドカードが含まれています。しかし、私はこれと一致していないようです、誰か助けてもらえますか?

そして、HTML を解析するために正規表現を使用すべきではないことはわかっていますが、これはほんの小さなことであり、このために巨大なモジュールをインポートするのは無駄です。

4

4 に答える 4

3

を使用していると仮定すると、そのパスの を として/regex literal/エスケープする必要があります。/\/

または、この文字列を取得する方法によって異なります。それは本当にそのように入力されているのでしょうか、それとも後でもう一度読み込んでいる innerHTML の一部なのでしょうか? その場合、ブラウザがそれを「正規化」するため、innerHTML は期待どおりにはなりません。

それが innerHTML の場合、タグを取得してからタグのhref属性を取得し、それを正規表現する方がはるかに簡単です。

于 2012-06-16T14:44:50.480 に答える
1

キャプチャ グループを少し違うものに変更した方がよいと思いますが、終了文字まですべてをキャッチします。

link href="/post?page=([^&]+)&amp;tags=([^\"]+)" rel="last"

文字グループで最初に否定文字を使用すると、正規表現エンジンに「ここにリストされているものを除くすべての文字をキャプチャする」ように指示されます。これにより、アンパスタンドや二重引用符などの終了文字に到達するまで、すべてを簡単にキャプチャできます。PHP または Java を使用していると仮定すると、これにより正規表現のパフォーマンスもわずかに向上するはずです。

于 2012-06-16T14:43:27.383 に答える
1

link href="/post\?page=(.*?)&amp;tags=(.*?)" rel="last"
前にスラッシュを忘れた?

于 2012-06-16T14:43:29.890 に答える
0

pageパラメータが常に最初に来る場合は、 PCRE を試してください /\?page=(\d+)/。一致グループ 1 にはページ番号が含まれます。

于 2012-06-16T14:42:55.490 に答える