2014-11-20 4 views
-1

У меня есть следующая строка:Как вытащить строку с помощью регулярных выражений

>>> x 
'Content Type: TV Mini-Series\n\n\n      - 705 min - Action|Drama|History |' 

Я хочу, чтобы вытащить значение «Mini-Series», без чего-либо до или после него. Это то, что у меня есть до сих пор:

>>> re.match(r'.+TV Mini-Series', x).group(0) 
'Content Type: TV Mini-Series' 

Как я могу получить только текст «TV Mini-Series»?

+0

're.match (r '. + TV Mini-Series', x) .group (0) .split (':') [1]'? – Celeo

+0

Просто используйте обычный парсер HTTP и забудьте о багги-решениях, не так ли? –

ответ

1

Если вы хотите, чтобы поиск на основе Mini-Series и хотите 'TV Mini-Series вы можете поставить можно ведущим пробелом в шаблоне .so в TV верхнем регистре буквы [A-Z]* могут соответствовать любому комбинату заглавных букв до Mini-Series!

>>> re.search(r'[A-Z]* Mini-Series',x).group(0) 
'TV Mini-Series' 
0

Использование re.search будет лучше подходит для этого:

>>> re.search(r'TV Mini-Series', x).group(0) 
'TV Mini-Series' 
0

Regex кажется как излишним, когда вы можете просто использовать str.split:

>>> x = 'Content Type: TV Mini-Series\n\n\n      - 705 min - Action|Drama|History |' 
>>> x.split('\n', 1)[0].split(maxsplit=2)[2] 
'TV Mini-Series' 
>>> 
0

re.match (г '. + (TV Mini-Series), х) .group (1)
=> 'TV мини-серии'

Примечание: вы хотите использовать группу (1), так как группа (0) определяется, чтобы захватить всю строку

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