История изменений
Исправление theNamelessOne, (текущая версия) :
У меня работает так:
[a-zа-яёЁ_\-\[\]\\^{}|`]
[a-zа-яёЁ0-9\-\[\]\\^{}|`]*
Только я забыл про ключ re.IGNORECASE
, который нужно добавить к re.compile
Можно также посмотреть в сторону альтернативных реализаций регулярок под питон, поддерживающих Unicode Properties.
UPD: ещё нужно использовать «юникодные» литералы в случае второго питона:
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
import re
irc_pat = re.compile(ur"""
^\s*:
# nickname:
(?P<nickname>
[a-zа-яёЁ_\-\[\]\\^{}|`]
[a-zа-яёЁ0-9\-\[\]\\^{}|`]*
)
!~
# ident:
(?P<identifier>
\w+
)
@
# host:
(?P<hostname>
\w+
)
\ PRIVMSG\ #
# channel
(?P<channel>
\#\w+
)
\ : \ #
# message itself:
(?P<message>
.*
)$
""", re.VERBOSE | re.UNICODE | re.IGNORECASE)
text = u":ник-с-кириллицей-и-Ё!~ident@host PRIVMSG #channel : test message"
match = irc_pat.match(text)
if match:
print 'nickname is', match.group('nickname')
Исправление theNamelessOne, :
У меня работает так:
[a-zа-яёЁ_\-\[\]\\^{}|`]
[a-zа-яёЁ0-9\-\[\]\\^{}|`]*
Только я забыл про ключ re.IGNORECASE
, который нужно добавить к re.compile
Можно также посмотреть в сторону альтернативных реализаций регулярок под питон, поддерживающих Unicode Properties.
UPD: ещё нужно использовать «юникодные» литералы в случае второго питона:
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
import re
irc_pat = re.compile(ur"""
^\s*:
# nickname:
(?P<nickname>
[a-zа-яёЁ_\-\[\]\\^{}|`]
[a-zа-яёЁ0-9\-\[\]\\^{}|`]*
)
!~
# ident:
(?P<identifier>
\w+
)
@
# host:
(?P<hostname>
\w+
)
\ PRIVMSG\ #
# channel
(?P<channel>
\#\w+
)
\ : \ #
# message itself:
(?P<message>
.*
)$
""", re.VERBOSE | re.UNICODE | re.IGNORECASE)
text = u":ник-с-кириллицей-и-Ё!~ident@host PRIVMSG #channel : test message"
match = irc_pat.match(text)
if match:
print 'nickname is', match.group('nickname').encode('utf-8')
Исходная версия theNamelessOne, :
У меня работает так:
[a-zа-яёЁ_\-\[\]\\^{}|`]
[a-zа-яёЁ0-9\-\[\]\\^{}|`]*
Только я забыл про ключ re.IGNORECASE
, который нужно добавить к re.compile
Можно также посмотреть в сторону альтернативных реализаций регулярок под питон, поддерживающих Unicode Properties.