Мы можем использовать re.findall
и затем нарезать результат, чтобы получить первое и третье совпадения:
import re
string = 'Hello, "How" are "you" What "are" you "doing?"'
result = re.findall('".+?"', string)[1::2]
print(result)
Здесь регулярное выражение соответствует любому количеству символов, содержащихся в двойных кавычках, но пытается найти как можно меньше совпадений ( не жадное совпадение ), в противном случае мы получим одно совпадение, "How" are "you" What "are" you "doing?"
.
Выход:
['"you"', '"doing?"']
Если вы хотите объединить их без кавычек, вы можете использовать str.strip
вместе с str.join
:
print(' '.join(string.strip('"') for string in result))
Выход:
you doing?
Альтернативным методом было бы просто разделить на "
:
result = string.split('"')[1::2][1::2]
print(result)
Вывод:
['you', 'doing?']
Это работает, потому что, если вы разделяете строку двойными кавычками, то результат будет следующим:
- Все до первой двойной кавычки
- Все после первой двойной кавычки и перед второй
- Всё после второй двойной кавычки и перед третьей
...
Это означает, что мы можем взять каждый четный элемент, чтобы получить те, которые в кавычках. Затем мы можем просто нарезать результат снова, чтобы получить 2-й и 4-й результаты.