这个正则表达式是
它是一个否定回顾后发断言,表示匹配不在空格之前的右大括号 '}'。
re.sub(r"(?<!\s)\}", r' }', string)
。那么,(?<!…)
序列代表什么意思?它是一个否定回顾后发断言,表示匹配不在空格之前的右大括号 '}'。
这里涉及到的不仅仅是<
符号,在您提供的正则表达式中还有一个“否定回顾后发断言”:(?<! )
,它的含义是“紧贴在它之后的内容不是……”。在您的情况下,它要寻找的是}
,但前面紧跟的不能是\s
——空白字符(制表符、空格等)。
这是一个回顾。在这里查看解释:http://www.rexegg.com/regex-disambiguation.html#negative-lookbehind
引用自源:
匹配后面的负向回顾:
\d{3}(?<!USD\d{3})
解释:\d{3}
匹配 100,然后负向回顾(?<!USD\d{3})
断言在字符串中该位置之前的内容不是字符 "USD" 然后三个数字。