expr/.rules 或 ReplaceAll[expr,rules]
应用一个规则或规则列表尽可能转换一个表达式 expr 的每个子部分.
ReplaceAll[rules]
表示可以应用于表达式的 ReplaceAll 的操作符格式.
ReplaceAll 
expr/.rules 或 ReplaceAll[expr,rules]
应用一个规则或规则列表尽可能转换一个表达式 expr 的每个子部分.
ReplaceAll[rules]
表示可以应用于表达式的 ReplaceAll 的操作符格式.
更多信息
- ReplaceAll 查看 expr 的每个部分,尝试所有的 rules,然后继续 expr 的下一部分. 使用应用到一个特定部分的第一个规则;在这个部分或它的任何子集没有尝试更多的规则.
- ReplaceAll 仅对一个表达式应用特定规则一次.
- 如果没有任何规则被应用,expr/.rules 返回 expr.
- ReplaceAll[rules][expr] 等价于 ReplaceAll[expr,rules].
范例
打开所有单元 关闭所有单元基本范例 (5)
{x, x ^ 2, y, z} /. x -> 1{x, x ^ 2, y, z} /. x -> {a, b}Sin[x] /. Sin -> Cos{a, b, c} /. List -> f1 + x ^ 2 + x ^ 4 /. x ^ p_ :> f[p]x /. {x -> 1, x -> 3, x -> 7}x /. {{x -> 1}, {x -> 3}, {x -> 7}}以操作符格式使用 ReplaceAll:
ReplaceAll[x -> a][{x, x ^ 2, y, z}]范围 (14)
x /. {y -> 2, z -> 3}{f[2], f[x, y], h[], f[]} /. f[x_] -> "OK"{f[2], f[x, y], h[], f[]} /. f[x__] -> "OK"{f[2], f[x, y], h[], f[]} /. f[x___] -> "OK"{1, 3, 2, x, 6, Pi} /. _Integer :> "int"用 PatternTest 替换测试方程的结果为 True 的部分:
{1, 3, 2, x, 6, Pi} /. _ ? PrimeQ -> "prime"用 Condition 对满足布尔表达式的部分进行替换:
{1, 3, 2, x, 6, Pi} /. t_ /; Mod[t, 3] == 0 -> "3k"{{a, 1}, {b, 2}} /. {x_, y_} :> Subscript[x, y]{{a, 1}, {b, 2}} /. {x_Symbol, y_} :> Subscript[x, y]ReplaceAll 还可用于 RuleDelayed:
{x, x, x} /. x :> RandomReal[]Hold[x + x] /. x -> 7Hold[x + x] /. x :> 2 ^ 2Hold[x + x] /. x -> 2 ^ 2Dispatch 可以代替规则列表:
{1, 2} /. Dispatch[{1 -> a, 3 -> b}]Association 可以代替规则列表:
{a, b} /. Association[{a -> 1, c -> 2}]用 Association 作为替换用的模式:
<|a -> 1|> /. <|a -> x_|> :> x用 KeyValuePattern 在规则列表中进行替换:
{a -> 1, b -> 2} /. KeyValuePattern[{a -> x_}] -> x从 Association 中提取和规则匹配的键:
ReplaceAll[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[{x_ -> 1}] :> x]{a -> 1, b -> 2} /. KeyValuePattern[{x_ -> _ ? EvenQ}] -> x属性和关系 (7)
x /. {}x /. {{x -> 1}, {y -> 2}}{a, b, c} /. {a -> b, b -> d}反复调用 ReplaceAll 将每个规则应用于所有部分:
{a, b, c} /. a -> b /. b -> d{g[1], Hold[g[1]]} /. g[n_] -> n + 1ReplaceAll 替换所有匹配的部分:
f[1, 2, z] /. _Integer :> "int"缺省情况下,Replace 替换整个表达式:
Replace[f[1, 2, z], _Integer :> "int"]Replace[f[1, 2, z], _Integer :> "int", {1}]ReplaceAll 对所能替换的最大的子表达式进行替换,然后停止操作:
rules = {f[x_] -> f[x, 5], f[x__] -> {x, 1}};{f[a], f[f[a, b]]} /. rulesReplaceRepeated 重复应用 ReplaceAll 直到表达式不再变化为止:
{f[a], f[f[a, b]]} //. rules% === ({f[a], f[f[a, b]]} /. rules /. rules /. rules)带有参数 All 的 Replace 将尝试只对每个子表达式进行一次替换:
Replace[{f[a], f[f[a, b]]}, rules, All]ReplaceAll 替换和模式匹配的表达式的部分:
{5, 4, 3, 2, 1} /. _ ? PrimeQ -> "p"ReplacePart 替换位置和模式匹配的表达式的部分:
ReplacePart[{5, 4, 3, 2, 1}, _ ? PrimeQ -> "p"]可能存在的问题 (4)
rules = Table[x[i] -> RandomInteger[{1, i}], {i, 10000}];Timing[Table[x[i] /. rules, {i, 10000}];]使用 Dispatch 会大幅提高速度:
disp = Dispatch[rules];Timing[Table[x[i] /. disp, {i, 10000}];]可以用关联来指定替换规则,但是把键视为 Verbatim 值:
assoc = <|1 -> True, _ -> False|>;{1, 2, _} /. assoclist = Normal[assoc]{1, 2, _} /. list{1, 2, _} /. {1 -> True, Verbatim[_] -> False}句号与数字的绑定关系要强过与斜杠的绑定关系,所以下面所示为除法操作:
{0, 1} / .0 -> "zero"{0, 1} /. 0 -> "zero"<|a -> f[b -> c]|> /. (k_ -> v_) :> g[k, v]对于和 Association 匹配的混合模式,里面的模式同时匹配键和值:
<|a -> f[b -> c]|> /. _[k_ -> v_] :> g[k, v]去掉和 Association 匹配的标头,只与值进行比较:
<|a -> f[b -> c]|> /. Except[Association][k_ -> v_] :> g[k, v]技术笔记
-
▪
- 运用变换规则
历史
1988年引入 (1.0) | 在以下年份被更新:2014 (10.0) ▪ 2015 (10.3)
文本
Wolfram Research (1988),ReplaceAll,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ReplaceAll.html (更新于 2015 年).
CMS
Wolfram 语言. 1988. "ReplaceAll." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2015. https://reference.wolfram.com/language/ref/ReplaceAll.html.
APA
Wolfram 语言. (1988). ReplaceAll. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ReplaceAll.html 年
BibTeX
@misc{reference.wolfram_2026_replaceall, author="Wolfram Research", title="{ReplaceAll}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/ReplaceAll.html}", note=[Accessed: 02-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_replaceall, organization={Wolfram Research}, title={ReplaceAll}, year={2015}, url={https://reference.wolfram.com/language/ref/ReplaceAll.html}, note=[Accessed: 02-August-2026]}