Найти - Пользователи
Полная версия: regExp пропускает русское слово
Начало » Python для экспертов » regExp пропускает русское слово
1
o7412369815963
import re

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

import re
d = re.findall(r'~(\w+)',s,re.U)
for i in d:
print i
тут ещё запарка была, в начале и в конце “\s” для каждого слова свои должны быть, а не общими
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']
o7412369815963
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']
o7412369815963
а вот так вот сработало
>>> 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']
Nik
o7412369815963
что то не прокатило, (ubuntu 9.10)
Это зависит от настройки локали. Чтобы зависимости не было лучше указывать символы явным образом, а не классом:
r'\s~([a-zA-Zа-яА-ЯёЁ0-9_]+)(?=\s)'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB