Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 2, 2008 09:31:45

mario
От:
Зарегистрирован: 2007-08-04
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с регулярным выражением

Добрый день. Пожалуйста, подскажите. Есть такие записи:

Info: system
User: /misha/
User: /grisha/
User: /_vania/
User: /alex/
User: /nastya/
User: /oleg/
User: /_july/
User: /software/download/
User: /tools/_services/download/
Group: school

Нужно выцеплять только то, что стоит после User: .
Сделал следующее выражение: txt = re.findall('(User: \w+)', str(f))

r = ‘ewewwe User: 4dsdsds fff df df User: 2323 \nsdsdds’
txt = re.findall('(User: \w+)', str(f))
print txt

На примере 1 строки - работает.

Но, при обработке файла - нет.

f = urllib.urlopen("http://ресурс/db.txt")
line = f.read()
txt = re.findall('(User: \w+)', str(line))
print txt

Подскажите пожалуйста, как решить вопрос - в регулярках не очень силён, извиняйте.



Офлайн

#2 Авг. 2, 2008 10:11:40

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Работа с регулярным выражением

re.findall('User: (/.*/)$', text, re.M)
..bw



Офлайн

#3 Авг. 2, 2008 15:00:21

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Работа с регулярным выражением

bw
re.findall('User: (/.*/)$', text, re.M)
..bw
а почему бы не просто ‘User: (.*?)$’ при re.MULTILINE | re.DOTALL
правда автор не объяснил как быть со слешами



Офлайн

#4 Авг. 3, 2008 06:04:51

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Работа с регулярным выражением

Я заметил что слеши обязательно присутствуют в имени. В случае не корректной записи (отсутствие слешев, не предусмотренные предшествующие символы). Например, такой вариант был бы еще точнее, и работал бы максимально правильно в неизвестных ситуациях:

re.findall('User:\s*(/.*/)\s*$', text, re.M)
Т.е. теперь перед именем и после него могут распологаться “незначащие” символы (пробелы) в любом количестве. Ведь человеки не предают большое значение этим символам и могут напихать их в любом количестве, не задумавась над проблемами машины.

..bw



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version