1

以下の URL の正規表現を書くのを手伝ってくれる人はいますか? URL全体に一致する正規表現が必要です。URLのフォーマットはこのようになります。

https://www.mywebsite.com/us/cgi-bin/binary?cmd=_payment-option&transaction_id=8768JKHKJG19322&account_number=6UN85941RH525783L&transaction_date=Apr 12, 2012&transaction_amount=-$11.00&ccode=USD&act_id=6K6218756F7819322&counterparty=Pretty Flower Florist&initiated_page=_login&go_Ah9w8keNJ8YRLMkAMTS_Izeq0br1CF6OVtGv69WzOo8AjgDgGIiBetMG-lK&Go_Actions

これは私がこれまでに得たものですが、最初の「&」までしか一致していません

http[s]*:\/\/www.[a-zA-Z0-9.]*mywebsite.[a-zA-Z]*[/]*[a-zA-Z0-9]*[/]*cgi-bin[/]*binary[?]*cmd=[_a-z\-]*[[\&][a-zA-Z0-9_-]*[=][a-z ,A-Z0-9_-]*]*

どうすればパターンを繰り返すことができ&transaction_id=8768JKHKJG19322ますか?

[[\&][a-zA-Z0-9_-]*[=][a-z ,A-Z0-9_-]*]*動作しないようです

4

2 に答える 2

0

これはあまり堅牢な正規表現ではありませんが、一般的なパターンを繰り返すというアイデアが得られるはずです。

http[s]?:\/\/www\.mywebsite\.com(?:\/[a-zA-Z-?=_&\d\s,$\.]+)+
于 2012-04-18T09:19:06.987 に答える
0

(他のポスターが指摘しているように)部分的な答えです。なぜなら、あなたが達成しようとしていること、そしてあなたの文脈が何であるかが明確ではないからです。クエリ文字列パラメーター transaction_id の値を取得するだけの場合は、次のようになります。

[&?]transaction_id=([^&]+)

OPでは、ネストされたブラケットがあります。括弧は文字クラス専用です。それらをネストすることはできません。

代わりに、括弧を使用してください。括弧は 2 つの目的で使用されます。入れ子またはグループ化を示すためと、プログラムの match[] 配列に値を「キャプチャ」するためです。

残りのクエリ文字列の認識に関しては、例のように、埋め込まれたスペースと一致する必要はありません&counterparty=Pretty Flower Florist。スペースは + または %20 としてエンコードされることを期待する必要があります。

アップデート:

この正規表現フラグメントは、入力 URL のクエリ文字列部分と一致します。

([&?]([^=]+)(=([^&]+))?)*

クエリ文字列のルールを正確に言い換えたものではありませんが、これを使用してパラメーターの名前と値を取得できます。この部分

([^=]+)

パラメータ名をキャプチャし、この部分

([^&]+)

パラメーター値があればそれをキャプチャーします。

于 2012-04-18T13:52:04.483 に答える