Skip to main content
 首页 » 编程设计

Python 正则表达式处理点字符

2025年05月04日24del

在 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 提到的,您还可以将 - 放在字符类的开头或结尾,例如[-+=*/] 或 [+=*/-] 都可以解决问题。