2016-12-08 1 views
2

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

, например:

try to be nice; underastand people. start fresh. 

Я хочу, чтобы удалить "понять людей" и что-то вроде

try to be nice. start fresh 

это мое регулярное выражение, но к сожалению, это не работает:

sentence = ''.join(re.sub(r';.*?.', '.', sentence)) 

Спасибо!

+0

Что вы получите, когда пользователь вашего регулярного выражения? Откуда вы знаете, что это не работает? – CGritton

+0

Вы забыли покинуть точку. 'Г ';. * \.' ' –

ответ

3

Вы забыли избежать точки: r';.*?\.'. Кроме того, здесь нет необходимости в join, вы передаете строку re.sub и получаете строку после.

r';[^.]+' регулярного выражение кажется лучше, хотя, как это будет соответствовать ; и 1+, кроме буквальной точки символов (так, вы можете заменить пустую строку):

import re 
sentence = "try to be nice; underastand people. start fresh." 
sentence = re.sub(r';[^.]+', '', sentence) 
print(sentence) 
# => try to be nice. start fresh. 

Смотрите Python demo

Смежные вопросы