Уведомления

Группа в Telegram: @pythonsu

#1 Март 11, 2010 10:53:00

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

regExp пропускает русское слово

import re

s = ' ~boom ~НетПлана ~sweb '
d = re.findall(r'\s~([\w\d]+?)\s', s, re.LOCALE | re.U)
print d
не ловится ~НетПлана, уже всякие флаги подставлял и строку в уникоде подставлял, не получается что-то

Офлайн

#2 Март 11, 2010 11:49:24

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

regExp пропускает русское слово

вот, родил:

s = u' ~noData ~НетДаты ~sweb '        

import re
d = re.findall(r'~(\w+)',s,re.U)
for i in d:
print i
тут ещё запарка была, в начале и в конце “\s” для каждого слова свои должны быть, а не общими

Офлайн

#3 Март 11, 2010 12:07:48

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

regExp пропускает русское слово

>>> import re
>>> s = ' ~boom ~НетПлана ~sweb '
>>> re.findall(r'\s~(\w+)\s', s, re.LOCALE)
['boom', 'sweb']
>>> re.findall(r'\s~(\w+)(?=\s)', s, re.LOCALE)
['boom', '\xcd\xe5\xf2\xcf\xeb\xe0\xed\xe0', 'sweb']



Офлайн

#4 Март 15, 2010 13:12:08

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

regExp пропускает русское слово

Nik
>>> import re
>>> s = ' ~boom ~НетПлана ~sweb '
>>> re.findall(r'\s~(\w+)\s', s, re.LOCALE)
['boom', 'sweb']
>>> re.findall(r'\s~(\w+)(?=\s)', s, re.LOCALE)
['boom', '\xcd\xe5\xf2\xcf\xeb\xe0\xed\xe0', 'sweb']
что то не прокатило, (ubuntu 9.10)
Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> s = ' ~boom ~НетПлана ~sweb '
>>> re.findall(r'\s~(\w+)\s', s, re.LOCALE)
['boom', 'sweb']
>>> re.findall(r'\s~(\w+)(?=\s)', s, re.LOCALE)
['boom', 'sweb']

Офлайн

#5 Март 15, 2010 13:14:23

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

regExp пропускает русское слово

а вот так вот сработало

>>> s = u' ~boom ~НетПлана ~sweb '
>>> re.findall(r'\s~(\w+)(?=\s)', s, re.U)
[u'boom', u'\u041d\u0435\u0442\u041f\u043b\u0430\u043d\u0430', u'sweb']

Офлайн

#6 Март 15, 2010 14:03:10

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

regExp пропускает русское слово

o7412369815963
что то не прокатило, (ubuntu 9.10)
Это зависит от настройки локали. Чтобы зависимости не было лучше указывать символы явным образом, а не классом:
r'\s~([a-zA-Zа-яА-ЯёЁ0-9_]+)(?=\s)'



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version