2017-05-17 4 views
1
の間に存在する場合

はのは、この正規表現を見てみましょうキャプチャグループ、それは他の二つの言葉

case 1: 
start 
captureme 
suffix 
end 

case 2: 
start 
prefix 
captureme 
suffix 
end 

1)が私に教えてください、なぜ「captureme」を行いますケース1ではグループに取り込まれ、ケース2ではキャプチャされません。

2)「キャプチャ」テキストが、「開始」と「終了」の間に何かにかかわらず存在する場合、キャプチャしたい場合はどうすればよいですか?

case 3: 
start 
prefix 
suffix 
end 

感謝を:私は "capturemeが" 欠落している場合にも合うように、この正規表現を必要とする

注意!

+0

は、私が一致してキャプチャするために必要なものの一例であるhttp://prntscr.com/f8pivk – Trost

+0

ここで私が最も近いです(\ n。*?){0,10}(キャプチャ)?(\ n。*?){0,10} end これは私の望むとおりに一致しますが、行の制限があります。 – Trost

答えて

0

私は正規表現サンドボックスで遊んと、これは完全に私のために働いた:ここ

start[\S\s]+?(?:(captureme)[\S\s]+?)?end 
0

あなたはおそらく否定先読みで、条件を使用することができます。

(?(?!start)(captureme)|end) 

https://regex101.com/r/E6ZXZe/1

あなたの正規表現が一致していない理由は数量詞の?いるのであなたがそれを取るならば(それはうまくいくはずです)、それはおそらくcondintionalを行うために簡単ですが、 "0と1回の間の一致"を示していますur正規表現エンジンで許可されます。

+0

しかし、 "start ... end"(これらの単語を含む)と "captureme"があればそれをキャプチャする間に、すべてのテキストを一致させる必要があります。 – Trost

+0

'?'がなければ、それはそうするべきです:https://regex101.com/r/E6ZXZe/2 –

+0

@I'L'Iはい、今の場合1.5と2はあなたの例では1つの一致として認識されます。どういうわけかこれをキャプチャすることはできますか? http://prntscr.com/f8pivk – Trost