python - 基本的 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
. 我究竟做错了什么?
解决方案
替换不应该是另一个正则表达式,它应该是一个普通的字符串(或函数)。
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)