在 python 中使用正则表达式时,我遇到了一个场景。 我想做的是,如果字符串有运算符,我想在运算符前后添加空格。
s = 'H>=ll<=o=wo+rl-d.my name!'
op = 'H >= ll <= o = wo + rl - d.my name!'
看起来很直接,所以我想到了以下表达式:
re.sub(r'((<=)|(>=)|[+-=*/])+',' \\1 ',r'H>=ll<=o=wo+rl-d.myname!')
但我使用它的结果是:
'H >= ll <= o = wo + rl - d . my name!'
它在遇到的每个点 (.) 后添加一个空格,即使我没有在我的正则表达式中提到它。
我正在使用 python 2.7,如果您能对此有所了解,我将不胜感激。
请您参考如下方法:
圆点周围有空格的原因是-。具体就是[+-=],这是一个字符类,字符从+一直到=,其中包括。.
为避免这种情况,您必须使用 \- 转义 -,例如
re.sub(r'((<=)|(>=)|[+\-=*/])+',' \\1 ',r'H>=ll<=o=wo+rl-d.myname!')
正如@LaurentLAPORTE 提到的,您还可以将 - 放在字符类的开头或结尾,例如[-+=*/] 或 [+=*/-] 都可以解决问题。
