Регулярное выражение для замены двойной точки с запятой - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь заменить две или более последовательных точек с запятой только одной точкой с запятой, как показано в коде ниже, может кто-нибудь мне помочь.

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

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

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Если вы хотите удалить повторы точек с запятой, ;:

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))

Просто для наглядности.

0 голосов
/ 03 декабря 2018

Если вы также хотите заменить двойные точки с запятой там, где между ними может быть некоторое расстояние, вы можете попробовать следующее регулярное выражение:

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

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

Вывод:

select 
 current_date;Select 1 ;

Демонстрацияна rextester

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...