2010-10-03 10 views

Antwort

8
Inequality[1,Less,x,Less,2] /. HoldPattern[Inequality[a_,_,b_,_,c_]] -> {a, b, c} 


Out: {1, x, 2} 
+0

Ich fragte mich, warum 'HoldPattern' benötigt wird, und' Trace' enthüllt warum: 'Ungleichung [a _, _, b _, _, c_]' wird 'Ungleichung [a_, _, c_] && Ungleichheit [ c_, _, e_] '. Es entspricht also nicht mehr dem, was Sie erwarten. – rcollyer

+0

@rcollyer Ja, ein Muster wird ausgewertet. Probieren Sie dieses Beispiel aus. ** MatchQ [a/b, _/_] // Trace ** –

+0

Das würde mich stundenlang nerven, wenn ich versuche, dieses Muster zum Laufen zu bringen. – rcollyer

0

Warum verwenden Sie keinen Standardzugriff auf Unterausdruck?

expr = Ungleichung [1, weniger, x, weniger, 2]; {a, c, e} = {Ausdruck [[1]], Ausdruck [[3]], Ausdruck [[5]]};

+0

Weil ich brauche alle Ungleichheiten mit Gleichheiten in so etwas zu ersetzen - http://pastebin.com/wN2ENmL6 –

1

Auch können Sie dies tun:

Inequality [1, Weniger, x, Weniger, 2] /. Wörtliche @ Inequality [a_, _, c_, _, e_] -> {a, c, e}

ADL

Verwandte Themen