首页 > 解决方案 > 基本的 Python 正则表达式

问题描述

我正在尝试替换单个字母的每个实例,后跟一个 = 符号,后跟一个在 = 和字母之间有空格的字母。所以h=e将被替换为h = e. 这就是我现在所拥有的:

definition = 'h=e'
definition = re.sub(r"\w=\w", r"\w\s=\s\w", definition)

但这会产生\w\s=\s\w而不是h = e. 我究竟做错了什么?

标签: pythonregex

解决方案


替换不应该是另一个正则表达式,它应该是一个普通的字符串(或函数)。

https://docs.python.org/3/library/re.html#re.sub

re.sub(pattern, repl, string, count=0, flags=0)

返回通过替换 repl 替换 string 中最左边的不重叠出现的模式获得的字符串。如果未找到该模式,则字符串原封不动地返回。repl 可以是字符串或函数

例如:

definition = 'h=e'
definition = re.sub(r"(\w)=(\w)", "\g<1> = \g<2>", definition)
print(definition)

但是在这里使用单词边界会更容易:

definition = 'h=e'
definition = re.sub(r"\b=\b", " = ", definition)
print(definition)

推荐阅读