2013-04-19 2 views
1

Я хотел бы извлечь два слова FIRST и SECOND из приведенной ниже фразы, я попытался с этим регулярным выражением, чтобы получить слово перед косой чертой, но оно не работает:/кстати, это на Python:Регулярное выражение для извлечения слов перед косой чертой

import re 

    data = "12341 O:EXAMPLE (FIRST:/xxxxxx) R:SECOND/xxxxx id:1234" 
    data2 = "12341 O:EXAMPLE:FIRST2:/xxxxxx) R:SECOND2/xxxxx id:1234" 

    result = re.findall(r'[/]*',data) 
    result2 = re.findall(r'[/]*',data2) 
    print result,result2 
+0

Вы не сопрягая ничего, кроме '/' косой черты в ваше выражение. –

+0

Как насчет толстой кишки? – jamylak

+0

Вам нужно прочитать регулярные выражения. Вы ищете 0 или более символов '/'. –

ответ

6

Попробуйте

result = re.findall(r'\w+:?(?=/)',data) 

Объяснение:

\w+ # Match one or more alphanumeric characters 
:? # Match an optional colon 
(?=/) # Assert that the next character is a slash 

Если вы не хотите, двоеточие быть частью матча (ваш вопрос остается неясным по этому вопросу), поставить дополнительное двоеточие в опережении утверждения:

result = re.findall(r'\w+(?=:?/)',data) 
+0

+1 Я думаю, что может быть один или нет двоеточий – jamylak

+0

@SkivlageLatif: используйте вторую версию. –

+0

Спасибо Тим Пицкер! –

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