Извлечение подстроки между двумя известными маркерами с проблемными маркерами

@miernic спросил долго назад, как извлечь произвольную строку, расположенную между двумя известными маркерами в другой строке.

Моя проблема в том, что два маркера включают метасимволы регулярного выражения. В частности, мне нужно извлечь ABCD из строки ('ABCD',), круглых скобок, одинарной кавычки и запятой, включенных в исходную строку. Сама извлеченная строка может содержать одинарные и двойные кавычки, точки, круглые скобки и пробелы. Создатели всегда (' и ',).

Я пытался использовать строки r и множество escape-символов, но ничего не работает.

Пожалуйста....


person MeirG    schedule 03.01.2020    source источник
comment
Просто используйте r"\('(.+?)',\)" в re.findall   -  person anubhava    schedule 03.01.2020
comment
I tried to use r' strings and lots of escape characters and nothing works., что ты пробовал?   -  person Toto    schedule 03.01.2020
comment
@Toto: я пробовал r"('(.+?)'). Предложение @anubhava сработало. Спасибо. Мое (ошибочное) предположение заключалось в том, что r-строки и escape-символы исключают друг друга.   -  person MeirG    schedule 03.01.2020


Ответы (1)


Преобразование моего комментария в ответ, чтобы будущим посетителям было легко найти решение.

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

r"\('(.+?)',\)"

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

person anubhava    schedule 03.01.2020