在Mathematica中,如何找到包含规则和列表的模式?

Ton*_*ony 5 design-patterns wolfram-mathematica

例:

test = {"a" -> {{1}, 12}, "b" -> {13}}
Run Code Online (Sandbox Code Playgroud)

我想用这个模式找到列表中的所有表达式:

_ -> {_,_}
Run Code Online (Sandbox Code Playgroud)

第一个元素"a" - > {{1},12}由此模式表示.

但是,这些表达式都不起作用:

Cases[test,_->{_,_}], Cases[test,_->_], Cases[test,Rule[_,_]], etc.
Run Code Online (Sandbox Code Playgroud)

任何意见,将不胜感激.

Pil*_*lsy 9

你在寻找的是HoldPattern:

In[1]:= test = {"a" -> {{1}, 12}, "b" -> {13}};

In[2]:= Cases[test, HoldPattern[_ -> {_, _}]] // InputForm
Out[2]= {"a" -> {{1}, 12}}
Run Code Online (Sandbox Code Playgroud)

编辑:这也适用于命名模式变量.

In[3]:= Cases[test, HoldPattern[_ -> {x_, _}] :> x]
Out[3]= {{1}}
Run Code Online (Sandbox Code Playgroud)