Форум сайта python.su
Добрый день. Пожалуйста, подскажите. Есть такие записи:
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
Подскажите пожалуйста, как решить вопрос - в регулярках не очень силён, извиняйте.
Офлайн
re.findall('User: (/.*/)$', text, re.M)
Офлайн
bwа почему бы не просто ‘User: (.*?)$’ при re.MULTILINE | re.DOTALL..bwre.findall('User: (/.*/)$', text, re.M)
Офлайн
Я заметил что слеши обязательно присутствуют в имени. В случае не корректной записи (отсутствие слешев, не предусмотренные предшествующие символы). Например, такой вариант был бы еще точнее, и работал бы максимально правильно в неизвестных ситуациях:
re.findall('User:\s*(/.*/)\s*$', text, re.M)
Офлайн