如何用正则表达式在右括号后接字母/数字时添加空格?
解决方案
你可以分两步处理文本,先清理右括号前的多余空格,再给符合条件的右括号后添加空格,修改后的代码如下:
import re input_text = "((PL_ADVB)dentro ). ((PL_ADVB)ñu)((PL_ADVB) 9u)" # 第一步:去掉右括号前的所有空格 input_text = re.sub(r"\s*\)", ")", input_text) # 第二步:在右括号后紧跟字母(含Unicode特殊字母)或数字时添加空格 input_text = re.sub(r"\)(?=[\p{L}\d])", ") ", input_text) print(repr(input_text))
代码说明
- 第一步的正则
\s*\):匹配右括号前的任意数量空格(包括0个),替换成纯右括号,解决原文本里)dentro )这种右括号后带空格的问题。 - 第二步的正则
\)(?=[\p{L}\d]):\):精准匹配右括号(?=[\p{L}\d]):正向预查,确保右括号后面紧跟的是Unicode字母(\p{L}能匹配ñ这类特殊字母,覆盖大小写)或者数字(\d),不会影响右括号后是空格、标点的情况- 替换为
),给符合条件的右括号后补上一个空格
运行这段代码后,输出就是你需要的:
"((PL_ADVB) dentro). ((PL_ADVB) ñu)((PL_ADVB) 9u)"
内容的提问来源于stack exchange,提问作者Matt095
相关产品推荐
相关产品推荐

