我正在为我的jekyll
站点扩展rouge
shell词法分析器,我想执行以下操作。
- 匹配
--word
.捕获word
,丢弃--
。 - 匹配
<word>
.捕获word
,丢弃<
和>
。 - 匹配
word=anyNumber.word
.捕获word
并anyNumber.word
,丢弃=
。
首先我尝试了/(?=-+)w/
,没有匹配任何东西,然后我尝试反向并丢弃word
例如/-+(?=w*)/
,它奏效了。我做错了什么?
我怀疑你想多了。你不需要在这里向前看或向后看。
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"]
str = "--hopscotch <dodgeball> cat=9.lives"
str[/(?<=--)w+/]
#=> "hopscotch"
str[/(?<=<)w+(?=>)/]
#=> "dodgeball"
str.scan /(?:w+(?==))|(?<==)d+.w+/
#=> ["cat", "9.lives"]