我正在rouge为我的网站扩展 shell 词法分析器,jekyll我想做以下事情。
- 匹配
--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"]