Найти подстроку в строке

Пытаюсь понять, как решить достаточно тривиальную задачку в Python. Дана строка вида Текст без кавычек «Текст в кавычках». Мне нужно извлечь из неё только текст Текст в кавычках, отбросив кавычки.

Вероятно нужно применить регулярные выражения, но как именно построить конструкцию - понять нем могу.


Ответы (2 шт):

Автор решения: mrEvgenX

Можно так «(.*)». А потом модуль re в помощь.

Проверка этой регулярки https://regex101.com/r/F8Sur4/1

Скобки - спецсимволы, которые определяют начало и конец захватываемой группы. Точка - значит любой символ. Звездочка - любое количество символов от нуля до бесконечности, которые перед ней.

В итоге .* - значит совершенно произвольная последовательность символов. А если поместить ее в скобки, то она будет сохранена отдельно, например, функцией re.match.

Ну а кавычки - это кавычки.

→ Ссылка
Автор решения: Alioshca Z

Можете, если захочется БДСМ-а, сами написать механизм регулярных выражений. Иногда бывает весело)

s = 'Текст без кавычек «Текст в кавычках». Мама мыла раму «Ещё немного текста в кавычках». Чё-то ещё и «Сколько угодно текста в кавычках»'

result = []
status = 0
temp_string = ''

for letter in s:

    if status == 0 and letter not in '«»':
        continue
    else:
        if letter == '«':
            status = 1
            continue
        elif letter == '»':
            status = 0
            result.append(temp_string)
            temp_string = ''
            continue
        else:
            temp_string += letter

print(result)
→ Ссылка