Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 10, 2010 06:22:16

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

regexp, не получается выбрать все символы после метки

# coding: utf-8

import re

d = """
test ticket
user1:
* task 1
* task 2
user2:
* vi1
* vi2
"""

f = re.findall('\n(\w+?):(.*?)',d)
print f
результат:
[('user1', ''), ('user2', '')]
по идее “(.*?)” должен выбирать все символы до следующего ключевого значения (“user2:”), а регекс выдает пустое значение, видимо только до конца строки

Офлайн

#2 Фев. 10, 2010 08:07:10

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

regexp, не получается выбрать все символы после метки

Выражение .*? выбирает минимально возможное количество любых символов кроме конца строки (если не использовать флаг re.DOTALL). Так как это выражение стоит у вас в конце регэкса, то оно не будет ничего (вообще ничего) выбирать. Кроме того вы не используете флаг re.DOTALL, поэтому конец строки, идущий после “:” ничем у вас не отлавливается и на нем регэкс благополучно обрывается, переходя к следующему “user2:”.
Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.
Как исправить этот регэкс, чтоб он работал, я не представляю. Поэтому стоит или как то жестко привязаться к формату строки (выбирать строки, начинающиеся со “*” например) или использовать более простые функции работы со строками. Тем более, что строка не такая уж и сложная, чтобы исползовать регэксы.



Офлайн

#3 Фев. 10, 2010 08:56:56

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

regexp, не получается выбрать все символы после метки

немного изменил синтаксис - добавил конечный символ

import re

d = """
test ticket
user1: yes
* task 1
* task 2
:
user2: up
* vi1
* vi2
:
"""

f = re.findall(r'\n(\w+?):(.+?)\n:',d,re.DOTALL)
print f
теперь работает.
спасибо

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version