You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式替换两类单个空格为\times符号?

解决LaTeX表达式中特定空格替换为\times的问题

问题分析

你需要将LaTeX字符串中两种场景的单个空格替换为\times:

  • 两个字母之间的单个空格
  • 右大括号}与字母之间的单个空格

之前使用\b\s\b只能匹配第一种场景,因为\b(单词边界)无法识别}(非单词字符)与字母之间的边界,导致a^{2} b中的空格无法被匹配。

解决方案

使用正向断言正则表达式同时匹配两种场景,避免依赖单词边界的限制:

正则表达式说明

(?<=[a-zA-Z])\s(?=[a-zA-Z])|(?<=\})\s(?=[a-zA-Z])
  • (?<=[a-zA-Z])\s(?=[a-zA-Z]):匹配前后均为字母的单个空格(对应第一种场景)
  • (?<=\})\s(?=[a-zA-Z]):匹配前为}、后为字母的单个空格(对应第二种场景)

修改后的Python代码

import re
import sympy
from IPython.display import display

a, b = sympy.symbols('a b')
f = (a + b)**3
expr = sympy.latex(f.expand())
display(expr)

# 使用组合正则替换两种场景的空格
expr = re.sub(r'(?<=[a-zA-Z])\s(?=[a-zA-Z])|(?<=\})\s(?=[a-zA-Z])', r' \\times ', expr)
display(expr)

运行结果

原表达式:

'a^{3} + 3 a^{2} b + 3 a b^{2} + b^{3}'

替换后:

'a^{3} + 3 \\times a^{2} \\times b + 3 \\times a \\times b^{2} + b^{3}'

内容的提问来源于stack exchange,提问作者D G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:55:26