Python使用re正则如何在指定单词Flavor后添加空格
错误原因
你原来的正则表达式误用了字符类语法[]:在正则规则中,方括号包裹的内容代表匹配其中任意单个字符,你写的["Flavor"]实际会匹配 "、F、l、a、v、o、r 中的任意一个字符,所以每个匹配到的字符后都被加了空格,才会出现单词被拆成单个字母加空格的情况。
正确修改方案
直接去掉正则里的方括号和多余的双引号即可,修改后的代码如下:
re.sub(r'(?<=Flavor)(?=[^\s])', r' ', short_description)
规则说明
(?<=Flavor)是正向后顾断言,只会匹配前面刚好是完整字符串Flavor的位置(?=[^\s])是正向前瞻断言,仅当该位置后面不是空格时才匹配,避免Flavor后面已经有空格的情况下重复添加- 两个断言同时满足时才会在对应位置插入空格,只会在Flavor后没有空格的位置补充空格,不会影响其他内容
可选优化
如果需要避免匹配到FlavorTest这类包含Flavor的长单词,可以补充单词边界限制,修改为:
re.sub(r'(?<=\bFlavor\b)(?=[^\s])', r' ', short_description)
内容的提问来源于stack exchange,提问作者boyenec
相关产品推荐
相关产品推荐

