正则表达式替换双分号

时间:2018-12-03 03:04:24

标签: python regex

我正尝试仅用一个分号替换两个或多个连续的分号,如下面的代码所示,任何人都可以帮助我。

import re
str='select \n current_date;; \n'
str += ';'
str += 'Select 1 ;  '
str += ';'

print re.sub(';+',';',str)

2 个答案:

答案 0 :(得分:5)

如果您还想替换双分号之间可能有一定间隔的地方,则可以尝试以下正则表达式:

import re
str='select \n current_date;; \n'
str += ';'
str += 'Select 1 ;  '
str += ';'

print re.sub('(;\s*)+;',';',str)

输出:

select 
 current_date;Select 1 ;

Demo on rextester

答案 1 :(得分:1)

如果要删除重复的分号,请;

import re
string ='select \n current_date;; \n'
string += ';'
string += 'Select 1 ;  '
string += ';'

print(re.sub(';(\s+);|(;)+',';', string))

>>
select 
 current_date; 
;Select 1 ;

这将删除分号之间有一个空格或一个或多个重复的分号。第一个模式;(\s+);用于带空格的分号,第二个模式用于一个或多个重复项(;)+

此外,请勿将Python的命名空间(例如str用作变量名)。

编辑: 我刚刚意识到,由于添加了换行符,因此不会返回您想要的内容:

尼克给出的答案通过用所有空格和重复替换分号来解决。

print(re.sub('(;\s*)+;',';',str))

为清楚起见。