2012-04-28 15 views
1

を繰り返し、私はこのテキストを持っている:正規表現がグループ

<span id="3"> 

HELLO THERE 
<span id="5"> 
Other stuff 
<span id="6"> 
Other Stuff 
<span id="7"> 
Other sutff 

は私がHELLO THEREテキストの後だけ<span...>の要素を取得する必要があります。上記の例では、id = 3のスパンを除くすべてのスパンです。

だから私はすべてのスパンをつかむ(<span.+?>)+を試しました。次に、私はHELLO THERE.+?(<span.+?>)+を試しましたが、それは最初の関連するものだけを取ります。だから私の質問は、ここで使用する正しい正規表現は何ですか?こんにちは後

+4

同様の問題について[非常に良い投稿](http://stackoverflow.com/a/1732454/335858)があります。 – dasblinkenlight

答えて

0

この正規表現は、一致するグループにあり、すべてのタグをキャプチャします:

HELLO THERE(?:(?:.*?)(<span[^>]+>))+ 
  • HELLO THERE - 非キャプチャグループの内部で始まり
    にマッチ:
  • (?:.*?) - 必要に応じて任意のテキストを一致させますあなたが見つかるまで
  • (<span[^>]+>) - これはキャプチャされます
  • + - 他のspanタグが

を見つけることができるまで、あなたはまた、ドットにあなたのマッチングオプションを設定する必要があり、前の2つの手順を繰り返し、新規行にマッチします。

+1

この正規表現をテストしましたか?私はあなたが驚くかもしれないと思う。 – Ziggy

+1

最後のスパン(id = 7)にのみ一致します。 – Tsayper