2015-12-27 4 views
2

я должен соответствовать текст с этой схемой:
Regex - соответствует шаблону (от захвата) до захвата группы

 
capture [\w\-\/]* wich are not ['] (\1)
capture [']+ wich follow (\2)
and replace \2\1\2 with \1

Пример:

 
my text is: l''''text'''
right output: l'text

Я попытался с:

re.sub(r"(\5)(?=((([\w\-\/](?<!'))+)('+)))", r"\2", text) 
+0

@Nic пожалуйста добавить некоторые пояснения к вашему сообщению. А также вы не можете отнести группу до захвата. –

+0

zetysz - Спасибо ... используя это вы замените без контроля, потому что вы не можете различать количество ['] до и после текста ... –

+0

@ AvinashRaj - мне нужно удалить бесполезную пунктуацию ... В итальянском языке вам нужно уменьшить статьи, за которыми следуют вокалы с помощью ['], и в этих файлах мне нужно управлять текстом с некоторыми ошибками ... Мне нужно выполнять синглы [ ], которые следуют правилам и отбрасывают тех, кто излишне. –

ответ

2

Вы можете сопоставить предыдущие согласованные кавычки после строки:

('+)([\w/-]+)\1 

\1 соответствует одной и той же текстовой группе 1.

Демо-версия онлайн https://regex101.com/r/zQ0hM2/2.

Python сессии демо:

>>> import re 
>>> text = "l''''text'''" 
>>> re.sub(r'''('+)([\w/-]+)\1''', r'\2', text) 
"l'text" 
+0

для общего использования '(['"] +) ((?: (?! \ 1).) *) \ 1' –

+0

@AvinashRaj: но OP хотел ограничить символы между кавычками символами слова, титры и слэши –

+0

Я использовал: '(' +) ([\ w/-] +) \ 1 ' –

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