Как подобрать двойные закрывающиеся фигурные скобки, за которыми не следует фигурная скобка - PullRequest
1 голос
/ 27 мая 2020

Итак, у меня есть уравнение RegEX и строка кода, которая удаляет все фигурные скобки из строки, но я хочу, чтобы скобки удалялись только тогда, когда они сбалансированы

вот моя строка:

matches = re.findall(r'{{(.*?)}}', url)

пример строки: {{location.city}} output: location.city

Но допустим, входная строка:

{{location.city}}}}

Я хочу, чтобы результат был location.city}}

Я некоторое время возился с RegEx и до сих пор не понял, как это сделать.

1 Ответ

2 голосов
/ 27 мая 2020

Вы можете не требовать } после закрытия }}:

re.findall(r'{{(.*?)}}(?!})', url)

См. демонстрацию регулярного выражения

(?!}) - это отрицательный прогноз который не соответствует совпадению, если сразу справа есть }.

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

re.findall(r'(?<!{){{(.*?)}}(?!})', url)

См. эту демонстрацию регулярного выражения .

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