Ruby 这个角色去了哪里?
我将字符串与正则表达式匹配:Ruby 这个角色去了哪里?,ruby,regex,onigmo,Ruby,Regex,Onigmo,我将字符串与正则表达式匹配: s = "`` `foo`" r = /(?<backticks>`+)(?<inline>.+)\g<backticks>/ 为什么$~[:inline]不是“`foo”?由于$&是s,我希望: $~[:backticks] + $~[:inline] + $~[:backticks] 要成为s,但它不是,一个反勾号就消失了。回跳到哪里去了?这实际上是意料之中的。看: (?`+)-匹配1+个反向标记,并将它们存储在命名的捕
s = "`` `foo`"
r = /(?<backticks>`+)(?<inline>.+)\g<backticks>/
为什么$~[:inline]
不是“`foo”
?由于$&
是s
,我希望:
$~[:backticks] + $~[:inline] + $~[:backticks]
要成为
s
,但它不是,一个反勾号就消失了。回跳到哪里去了?这实际上是意料之中的。看:
-匹配1+个反向标记,并将它们存储在命名的捕获组“反向标记”(有两个反向标记)。然后(?`+)
-1+个字符(换行符除外)匹配到“内联”命名的捕获组中。它获取所有字符串和回溯,以向递归子模式(实际上是“回溯”捕获组)生成字符。所以(?。+)
-查找字符串末尾的1个反勾号。它满足匹配1+反勾号的条件。此处重新写入命名的捕获“backtick”缓冲区\g
"`` `foo`"
||1
| 2 |
|3
然后1变为3,因为1和3是同一组,你会看到一个倒勾。谢谢。这个问题很愚蠢。我把
\g
误用为\k
。是的,有一个反向引用。
"`` `foo`"
||1
| 2 |
|3