2017-06-20 10 views
0

正規表現で私を助けてもらえますか?私はこれに初心者です。テキスト抽出のための正規表現

私の要件は、私は車を抽出したいんです(つまり、123456789)以下のURLから:

mysite.com/resource?slk=121&ops=rewww&from=kld&to=aop&search=things&validVehicle=sdfdsdff-sdfdf-sddf%3AVX%3ALNCX%3A123456789%3AOPW%3ALOS 

は私が表現以下試してみました:

[&?]{1}validVehicle[=]{1}[^&]*[%3A]{1}([^%&]+) 

しかし、それは無効な結果を与えています。これで私を助けてくれる?

+0

どのようなプログラミング言語をお使いですか? – baao

+2

おそらく、['[&?] validVehicle = [^&] *%3A(\ d +)'](https://regex101.com/r/TjfhX5/2)がその仕事をします。または['[&?] validVehicle = [^&] *(\ d {9})'](https://regex101.com/r/TjfhX5/3)。車両番号の要件は何ですか? –

+0

はいそれはhttps://regex101.com/r/JqDSBG/1です – fxlacroix

答えて

1

純粋な正規表現のソリューション:

[&?]validVehicle=[^&]*(\d{9}) 

それとも、あなたは確信している場合、彼らは%3A後に表示され、数字で続かない:

[&?]validVehicle=[^&]*%3A(\d{9})(?!\d) 

this regex demoanother regex demoを参照してください。 - ?または&

  • validVehicle= - リテラルストリング
  • [^&]*から&以外の任意の記号、多くのよう

    • [&?]:あなたが求める価値は、グループ1に

      詳細ですできるだけ最後まで

    • %3A - リテラルサブストリング
    • (\d{9}) - グループ1:9桁
    • (?!\d) - 数字が続くことはありません。
  • 0

    A「構造」approachパターンの区切り文字としてそれらの「%3A」コロンを使用するかもしれない、非貪欲ワイルドカード.*と組み合わせによって定義される(これは「validVehicle」のフィールドと一致区切り%3a、この構造が変化しないと仮定し):この方法の

    [&?]validVehicle=(?:.*?%3a){3}(.*?)%3a 
    

    ユーティリティ\d{9}パターンが既にちょうどあなたが入ってくるデータに関する特定のために知っているものに依存し、実際に提案対。そのようなパターンは、確かにその区切り値の他のフィールドの9桁に一致します。

    関連する問題