2011-01-04 30 views
3
"very \n simple example of big" 
=> return true because first occurrence moving backwards from example is \n 


"very \n\t\t simple example of big" 
=> return false because first occurrence moving backwards from example is \n\t\t 

これは逆正規表現によるルックアップで可能ですか?特定の文字列の逆正規表現ルックアップ

+0

詳しいことはできますか?最初の出現は何ですか?それが\ nの場合は、他のシーケンスを含める必要がありますか? – Chandu

+0

あなたは何を試そうとしていますか? 'example'の前に '\ n'が付きますか? – sbeam

+0

@cybernateはい。最初の出現\ @sbeam前に\ n \ t \ tの前に\ nがある単語を一致させようとしています – ralph

答えて

1

私はまだあなたが探しているものは完全にはわかりませんが、もしそれがならば "タブで始まらない行で 'example'という単語が出現するかどうかを調べる"ここ行く:

ruby-1.9.2-p136 :001 > samples = [ "very \n simple example of big", "very \n\t\t simple example of big" ] 
=> ["very \n simple example of big", "very \n\t\t simple example of big"] 
ruby-1.9.2-p136 :002 > samples.map{ |s| s[/^[^\t\n]+.+?example/] } 
=> [" simple example", nil] 
1

私はdonnoので、私はJavaScriptで検証済みの正規表現を与えるルビー、:

/\n[^(\t+)]+ example/g 
+0

'[^(\ t +)]'は ''( '、') '、' + '、タブ"以外を意味します - 文字クラスの中で量子を使うことはできません。また、これは行のどこにでもタブを許可しません。 – Kobi

+0

hmm再確認しましょう。 Thx – Chandu

1

質問があまりにも明確ではないが、私はこれが何をしたいと思い、negative lookaheadを使用して:

^(?!\t\t).*example 

例:http://rubular.com/r/DRdlscH6cO

ここで私は(あなたが好む場合は\nを使用することができますが、それは最初の行と一致しません)ラインの開始のための^を使用しています。 .は、デフォルトでは別の行と一致しないので、安全です。
また、キャプチャグループを追加し、唯一の単語全体が一致することもできます。正規表現がexampleを含む行を許可し、\t\t始まらない

^(?!\t\t)(.*)\bexample\b 

。 1行は\tで始まり、別の場所では\t\tになります。

1

私はあなたが探している正確に何か分からないが、あなたは常に前方の文字列との一致を逆にすることができます:

>> "very \n simple example of big".reverse.match(/elpmaxe[^\t]+\n/) 
=> #<MatchData "elpmaxe elpmis \n"> 

>> "very \n\t\t simple example of big".reverse.match(/elpmaxe[^\t]+\n/) 
=> nil 

を、私は、これは賢いと愚か間のラインを越えたかどうかわからないんだけどそれはあなたの例に作用します。

+0

この場合、大きな ".match(/ \ n [^ \ t] + example /)'の非常に単純な例とはどのように違いますか?あなたはlookbehindを使用しないので、なぜ文字列を逆転させるのか理解できません。おそらく良いヒントでしょう。 – Kobi

+0

@コビー:私はそれがより良い、または良いと言わなかったので、脊髄のタップのリファレンス。私は文字列を逆にして見栄えを先読みに置き換えることができました。あなたが物事を逆戻りさせ、前向きに見えるように、ラルフは後ろ向きについているように見えますが、前方は正規表現にとってより自然な方向です。私たちは皆、ラルフが本当にやろうとしていることを理解しようとしているのではないかと思っています。 –

+0

@コビー:脊柱タップに慣れていない場合:http://en.wikiquote.org/wiki/This_Is_Spinal_Tap#Nigel_Tufnel –