从大表达式中提取与模式匹配的表达式

| 我有一个Mathematica表达式,其中包含一个平方根
expr = a / (b + Sqrt[c]);
a
b
c
是大表达式。我想在sqrt下提取表达式,例如通过匹配一个模式,例如
Match[expr,Sqrt[x_]] // should return c
是否有捷径可寻?     
已邀请:
从理论上讲,这应该可以正常工作:
extractSqrt = Cases[ToBoxes@#, SqrtBox@x_ :> ToExpression@x, Infinity] &;

extractSqrt[expr]
    
如果您愿意将分配更改为“ 6”,则可以执行以下操作:
expr = Hold[a / (b + Sqrt[c])];

Cases[expr, HoldPattern @ Sqrt[x_] :> x, Infinity]
赋值语句中的
Hold
阻止Mathematica对表达式应用任何简化形式。在这种情况下,“ 9”将“简化”变成“ 10”。 ѭ11在表达式ѭ12中是必不可少的,以防止对匹配的模式进行相同的简化。     
我等待一些示例,但与此同时,请尝试:
Cases[expr, x_^(1/2 | -1/2) :> x, Infinity]
Sqrt(x)的标准内部格式为
Power[x, 1/2]
。     

要回复问题请先登录注册