Skip to main content
 首页 » 编程设计

python之与 re.sub 混淆

2025年05月04日12duanxz

我有字符串 aa{{{a {{ {aaa{,我想将其转换为 aa { { {a { { {aaa {。基本上每个 { 之前都必须有一个空格字符。

我目前使用的正则表达式替换函数是:re.sub(r'[^\]{', lambda x:x.group(0)[0]+' {', test_case) 该函数的结果是:aa {{ {a { { {aaa {(关闭,但字符串中有一个 {{)

我的方法在像 a{a{a 这样的部分上表现非常好。但是,如果两个 { 字符在一起,如 a{{a 它似乎只对第一个 { 进行操作,而完全忽略后面的 {.

一个更明显的例子是大量的 {{{{{{{{{{{{}。我的正则表达式替换返回:{ {{ {{ {{ {{ {{ {。这显然会跳过给定紧密嵌套的所有其他字符 {。

他们为什么要逃课?任何帮助解开这种困惑的帮助将不胜感激!

附言我对所有强烈希望关闭所有打开的花括号的人感到抱歉。

请您参考如下方法:

我会使用负面回顾:

re.sub(r'(?<!\s)(\{)',r' \1','{{{{{{') 

基本上我们解析字符串直到我们遇到 { .如果它之前的字符不是空格(即 (?<!\s) 位),则 {匹配,我们用前面的空格替换它。