2012-04-18 20 views
0

以下のURLの正規表現を書くのを手伝ってもらえますか? URL全体に一致するRegexが必要です。 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_-]*]*

は、これは非常に強力な正規表現ではありません

+2

あなたはおそらく達成しようとしているものを追加したいと思っています... – Stefan

答えて

0

動作するようには思えないが、それはあなたのアイデアを与える必要があります - 一般的なパターンを繰り返します。

http[s]?:\/\/www\.mywebsite\.com(?:\/[a-zA-Z-?=_&\d\s,$\.]+)+ 
0

(他のポスターが指摘したように)、あなたが達成しようとしていることとあなたのコンテキストが明確でないためです。あなただけのクエリ文字列パラメータのTRANSACTION_IDの価値を引き出したいなら、これはあなたのために仕事をする:あなたのOPで

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

、あなたは括弧を入れ子にしています。角カッコは文字クラス専用です。あなたはそれらを入れ子にすることはできません。

代わりにかっこを使用してください。括弧は、ネストまたはグループ化を示すため、およびプログラム内のmatch []配列に値を「取得」するために使用されます。

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

更新:

この正規表現の断片は、あなたの入力URLのクエリ文字列の一部と一致します:

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

これは、クエリ文字列のためのルールの正確な言い換えではないのですが、あなたはそれを使用することができますパラメータ名と値を取得します。この部分

([^=]+) 

は、パラメータ名、および

([^&]+) 

があれば、パラメータ値をキャプチャし、この部分をキャプチャします。

+0

'&transaction_id = 8768JKHKJG19322'のような文字列にマッチする正規表現を書いています。このような繰り返しフィールドがたくさんあります。 &par1 = value1&par2 = value2&par3 = value3。繰り返しパターンに一致する正規表現が私が探しているものです。 – cppcoder