python - 如何使用正则表达式在除看起来像 \something 的任何字符之外的字符之间的整个字符串中插入空格
问题描述
我有一个字符串s = '{qcos\\theta_{g}\\over r})^{2\\over 1 + \\alpha^{2}}}\\ 1234'
如果我使用(?<=.)(?!$)
本示例中使用的正则表达式,它会将整个字符串拆分为白色字符。但我想保留任何东西\wordonly
,例如在上面给定的字符串中,我希望答案是
'{ q c o s \\theta _ { g } \\over r } ) ^ { 2 \\over 1 + \\alpha ^ { 2 } } } \\ 1 2 3 4'
where\theta
保持不变,但123
变成1 2 3
,abc
变成a b c
,\theta_{21}
变成\theta _ { 2 1 }
解决方案
您可以使用
import re
s = '{qcos\\theta_{g}\\over r})^{2\\over 1 + \\alpha^{2}}}\\ 1234'
print( ' '.join(re.findall(r'\\[a-zA-Z]*|\S', s)) )
# => { q c o s \theta _ { g } \over r } ) ^ { 2 \over 1 + \alpha ^ { 2 } } } \ 1 2 3 4
请参阅Python 演示。
使用re.findall(r'\\[a-zA-Z]*|\S', s)
,您将获得\
+ 字母和任何单个非空白字符的列表。
然后,您只需将找到的项目与空格连接起来,' '.join(...)
.
正则表达式详细信息:
\\
- 一个\
字符[a-zA-Z]*
- 零个或多个 ASCII 字母|
- 或者\S
- 任何非空白字符。
请参阅正则表达式演示。
推荐阅读
- fft - Sympy 傅里叶变换
- email - 如何将退订信息用于交易和营销电子邮件?
- javascript - 如何重复/循环上传多张图片的预览?
- dart - 如何在 VS Code 中调试以命令行属性开头的 Dart 控制台应用程序?
- html - 侧边栏菜单的叠加
- php - 如何在大多维数组php中使用数组值作为变量
- python - Python 打字 - 为什么我可以将一个可选的 Pandas DataFrame 分配给一个非可选的 Pandas DataFrame
- sql - 计算组内加权平均值的累积分布
- c - 拆分复杂字符串的C函数
- powershell - Azure YAML 文件 powershell 脚本参数问题传递参数