2011-12-05 7 views
2

間のすべてのものと一致...Rubyの正規表現は、これはRubyで正規表現についてですキーワード

私のように見える文字列を、持っている:「

を--- \ N- PARSEFROMHERE anyrthingあなたは数字、特殊文字を想像することができます何かENDPARSEFROMHERE \ n PARSEFROMHERE何でも数字の特殊文字を想像することができますENDPARSEFROMHERE \ n "

どのように私はPARSEFROMHERE ENDPARSEFROMHEREといくつかの正規表現との間のすべてをマッチングしますか?

ありがとうございます!

PARSEFROMHERE(.+)ENDPARSEFROMHERE 

これで問題がしかしあります限り、「ENDPARSEFROMHEREは」試合中に表示されないよう

+1

"anyrthingは数字の特殊文字を想像することができます"と言う部分では、 "foo bar fake_ENDPARSEFROMHEREバズ "。この場合、どうしたらいいでしょうか? –

+0

いいえ、PARSEFROMHEREは常に空白で区切られています。 – Stpn

+2

OK、「数字の特殊文字は何でも想像できるもの」には「foo bar fake ENDPARSEFROMHERE baz」が含まれていますか?私の想像力はかなり野生ですが、私は知っていますが、あなたが想像していることは何でも言っています... –

答えて

3

これを試してみてください:

regexp = /\bPARSEFROMHERE\b(.*?)\bENDPARSEFROMHERE\b/m 

すべてが後方参照1に格納されている。しかし、いくつかの魔法の理由であれば、あなたは、この正規表現は失敗します「アンバランス」区切り文字、無残を持っています。

編集:

regexp = /\sPARSEFROMHERE\s(.*?)\sENDPARSEFROMHERE\b/m 

PARSEFROMHEREは常にされた空間が先行し、続いて、あなたの例によります。 ENDPARSEFROMHEREと同じですが、これは\nで終わるので、私はそこに単語境界のアンカーを押し付けました。

+2

「PARSEFROMHEREは常に空白で区切られています」という文があると、 'foo-bar'に4つの' \ b'があると仮定すると、 '\ b'の代わりに明示的に使用したいかもしれません。 – Phrogz

+0

Rubyがどのように '/ m'を使っているのか、他のすべての主要なフレーバーは'/s'を使っています。 – Qtax

+0

@Phrogz良い点!編集。 – FailedDev

0

シンプル。 ENDPARSEFROMHEREから次のENDPARSEFROMHEREにも一致します。開始タグと終了タグのバランスが取れていないと、問題が発生します。

+1

この行為は2つの異なる理由で失敗すると思います。 – Qtax