2016-06-01 6 views
0

私はjekyllサイトでrougeシェルレクサーを拡張しています。文字列にマッチするが、ルビーの部分文字列のみをキャプチャする

  1. 一致--word。キャプチャword、破棄--
  2. 一致<word>。キャプチャwordは、<>の両方を破棄します。
  3. 一致word=anyNumber.word。キャプチャwordおよびanyNumber.word、廃棄=を破棄します。

まず、私は何も一致しなかった、/(?=-+)\w/を試してみましたが、私は逆とwordなど/-+(?=\w*)/などを廃棄しないことを試み、それが働きました。私が間違っていることは何ですか?

+1

小さな例を追加し、所望の結果が参考になります。これを行う場合は、各入力値( 'str =" ... "')に変数を割り当てて、読者が変数を定義することなく参照できるようにしてください。 –

答えて

2

私はあなたがこれを思っていると思う。先読みや見た目を必要としません。

str = "foo --word1 <word2> word3=anyNumber.word4" 

p /--(\w+)/.match(str).captures 
# => ["word1"] 

p /<([^>]+)>/.match(str).captures 
# => ["word2"] 

p /(\w+)=([\w.]+)/.match(str).captures 
# => ["word3", "anyNumber.word4"] 
0
str = "--hopscotch <dodgeball> cat=9.lives" 

str[/(?<=\-\-)\w+/] 
    #=> "hopscotch" 
str[/(?<=\<)\w+(?=\>)/] 
    #=> "dodgeball" 
str.scan /(?:\w+(?=\=))|(?<=\=)\d+\.\w+/ 
    #=> ["cat", "9.lives"] 
関連する問題