2011-02-01 19 views
3

RegExを使用してパターン内のパターンを検索しようとしています。具体的には、参照にURLをキャプチャし、その中に最後の=記号の後に来るすべてのものを検索し、それをキャプチャするだけです。RegEx:パターン内のパターンの一致 - 正のLookbehindを使用する必要があると思いますか?

だから私が最初にこの正規表現を使用して

href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff" 

を見つけるだろう、この文字列

<a href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff" style="color: #365EBF:">stuff</a> 

与えられた:href="(https?[^"]*)"

そこからキャプチャグループを見たとき、私は実際の文字列を(解析でき)私はこれでEM_CMC21892_LC_stuffを探しています:=[^"=]*$

1つのRegExで2つを組み合わせてみると、私は成功しません。

どのような考えですか?

+1

ここで正規表現を使用する理由は何ですか?使用している言語にHTML解析ライブラリまたはURL解析ライブラリがありませんか? –

+0

さて、私は正規表現を使ってよりうまくやろうとしているので、可能かどうかを見たいと思っていました。他の理由は、言語(RealStudio)が処理する解析ライブラリを持っているかどうかわかりません。これは私が過去に取り組んできたことのアップデートであり、私は他の要因やパターンに基づいて奇妙な検索/置換を行い、RegExが私の最高の選択肢でした。 – dscl

+0

はい、もちろん可能です。すべてのことが可能ですが、すべてが便宜ではありません。 – tchrist

答えて

0

正規表現を使用してHTMLを解析すると、問題が発生することがあります。

これは、試してみてくださいhref="http[^"]+=([^"]+?)"です。

+0

いいえ、問題を求めないで*深刻な*教育を求めています。 ☺ – tchrist

0

私は(あなたが私たちは本当にその上で役立つことはできません使用している言語を指定していないのに...)の代わりに正規表現の既存のHTML/URL解析機能の使用方法についてのマーク・バイエルさんのコメントに同意

/href="([^"]*=([^"]*))"/ 

編集、追加する:あなたはそれを正規表現の方法を行う上で主張している場合は、ここでのパターンは、ここで結果は希望のように見えるものである、あなたはまだ完全なURLをキャプチャしたい場合は確認されませんでしたまたは最後のパラメータの値だけですが、このパターンは両方をキャプチャします:

Array 
(
    [0] => Array 
     (
      [0] => href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff" 
     ) 

    [1] => Array 
     (
      [0] => http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff 
     ) 

    [2] => Array 
     (
      [0] => EM_CMC21892_LC_stuff 
     ) 

) 
関連する問題