我正在为 Alex Gorbatchev 的 Syntax Highlighter 编写画笔,以突出显示 Smalltalk 代码。现在,考虑以下 Smalltalk 代码:
aCollection do: [ :each | each shout ]
我想找到块参数“:每个”,然后每次出现时都匹配“每个”(为简单起见,假设每次出现都不仅仅是在括号内)。请注意,参数可以有任何名称,例如“:myArg”。
我尝试匹配“:每个”:
\:([\d\w]+)
这似乎有效。问题是我要匹配“每个”的出现。我认为这样的事情可以工作:
\:([\d\w]+)|\1
但是交替的右侧似乎被视为独立表达式,因此反向引用不起作用。
甚至有可能在一个表达式中完成我想要的吗?或者我是否必须在第二个表达式中使用反向引用(通过另一个函数调用)?