2013-02-18 8 views
1

У меня есть строка, как это:Regex согласование текста между двумя постоянными строками

Copied file D:\TROLOLO~2\MBF~2\PC\..\..\content\Application Folder\Blabla\FooFoo\bar.bar 

Я хотел бы, чтобы соответствовать

"D:\TROLOLO~2\MBF~2\PC\..\..\content\Application Folder" 

Обе строки «скопированный файл» и «Application Folder» известны и постоянны.

Как это сделать? Пожалуйста, также объясните правила, которые вы используете!

+1

Это так просто, что он не заслуживает иного, чем комментарий: '' re.compile ('Скопированный файл * (. +? Папка приложений) '' создает регулярное выражение, а желаемая часть текста захватывается группой между parens , Документации достаточно, чтобы понять шаблон. – eyquem

ответ

4

Попробуйте это:

^Copied file (.+?Application Folder) 

Результат вы хотите находится в группе 1

^     : begining of string 
Copied file   : litteral 
(     : start grouping 
.+?     : Any char one or more times non greedy 
Application Folder : litteral 
)     : end grouping 
2

как насчет:

re.findall('(?<=Copied file).*?Application Folder',s) 
1

Альтернативным не используя регулярное выражение:

>>> text[12:text.index('Application Folder') + len('Application Folder')] 
'D:\\TROLOLO~2\\MBF~2\\PC\\..\\..\\content\\Application Folder' 
Смежные вопросы