2011-02-03 10 views
0

こんにちは私はこの正規表現を理解しようとしています。私は別の場所で異なるクエリ文字列のパラメータを持つことができるURLを持っています。正規表現補助:包含/除外

test.aspx?foo=bar&abc=123 
test.aspx?abc=123&foo=bar 
test.aspx?foo=bar&abc=123#T1 
test.aspx?abc=123&foo=bar#T2 

私は私がこれまで持っているもの。ここ#Tnumber

せずに1を見つけようとしています。

test.aspx\?(?!\#T[0-9]) 

しかし、まだすべてを選択していますが、文字列定数を持って行をスキャンする方法はありますか?

Juniorflip

+0

どの言語ですか?タグに追加してください... – Benjamin

+0

なぜこれの正規表現を使用していますか?あなたはライブラリを解析するURLにアクセスできませんか? – SilentGhost

+0

私はCrazyEgg Regexセレクタを使用しています – JuniorFlip

答えて

0

#Tnumが終わりに常にある場合は、あなただけのアンカーのビットを行う必要があります。たとえば、次のように:

test.aspx\?.*(?!\#T[0-9])...$ 

しかし、それは常に常にそのエンド・マッチングを吸収するために十分な文字を持つ非常に特定のフォームと良いのURLで終わる悪いのURLに依存することは非常に壊れやすいです。負の後読みアサーションは幾分良好であるが、それでも壊れやすいとはあまり一般的にサポート:

test.aspx\?.*(?<!\#T[0-9])$ 

それは正規表現を記述する方が良いでしょうが、あなたははしたくないものと一致し、ちょうど何をすべきかのロジックを反転することあなたがマッチを取ったとき(つまり、もしそれがそれを使うならば、それが "それを捨てる"の代わりに "マッチするなら")。しかし実際には、URLの解析を専用のライブラリに委任して、恐ろしいREのハックではなく、単に論理的な要素としてフラグメント識別子に対して単純なチェックを行うほうがずっと良いです。

+0

なぜハッシュ記号をエスケープしていますか? – SilentGhost

+0

さて、私はURL test.aspxを追跡しようとしていますが、#Tnumberを削除したいと思います。クエリ文字列パラメータの一部にTが含まれている可能性があります。 – JuniorFlip

+0

@ Silent:それは害を及ぼさず、元の状態で行われたためです。 –