LINUX.ORG.RU

История изменений

Исправление theNamelessOne, (текущая версия) :

Шаблоны для групп identifier, hostname, channel нужно уточнить, т.к. я не знаю, какие символы в них разрешены (сейчас просто буквы и числа):

# -*- coding: utf-8 -*-
#!/usr/bin/env python3

import re

irc_pat = re.compile(r"""
  ^\s*:
  # nickname:
  (?P<nickname>
    [a-z_\-\[\]\\^{}|`]
    [a-z0-9\-\[\]\\^{}|`]*
  )
  !~
  # ident:
  (?P<identifier>
    \w+
  )
  @
  # host:
  (?P<hostname>
    \w+
  )
  \ PRIVMSG\      #
  # channel
  (?P<channel>
    \#\w+
  )
  \ : \           #
  # message itself:
  (?P<message>
    .*
  )$
""", re.VERBOSE | re.UNICODE)

text = ":nick!~ident@host PRIVMSG #channel : test message"

match = irc_pat.match(text)

if match:
    print match.groups()
    # or match.group('nickname'), match.group('identifier'), etc

Исправление theNamelessOne, :

Шаблоны для групп identifier, hostname, channel нужно уточнить, т.к. я не знаю, какие символы в них разрешены (сейчас просто буквы и числа):

# -*- coding: utf-8 -*-
#!/usr/bin/env python3

import re

irc_pat = re.compile(r"""
  ^\s*:
  # nickname:
  (?P<nickname>
    [a-z_\-\[\]\\^{}|`]
    [a-z0-9\-\[\]\\^{}|`]*
  )
  !~
  # ident:
  (?P<identifier>
    \w+
  )
  @
  # host:
  (?P<hostname>
    \w+
  )
  \ PRIVMSG\      #
  # channel
  (?P<channel>
    \#\w+
  )
  \ : \           #
  # message itself:
  (?P<message>
    .*
  )$
""", re.VERBOSE | re.UNICODE)

text = ":nick!~ident@host PRIVMSG #channel : test message"

match = irc_pat.match(text)

if match:
  print match.groups()
  # or match.group('nickname'), match.group('identifier'), etc

Исходная версия theNamelessOne, :

Шаблоны для групп 'identifier', 'host', 'channel' нужно уточнить, т.к. я не знаю, какие символы в них разрешены:

# -*- coding: utf-8 -*-
#!/usr/bin/env python3

import re

irc_pat = re.compile(r"""
  ^\s*:
  # nickname:
  (?P<nickname>
    [a-z_\-\[\]\\^{}|`]
    [a-z0-9\-\[\]\\^{}|`]*
  )
  !~
  # ident:
  (?P<identifier>
    \w+
  )
  @
  # host:
  (?P<hostname>
    \w+
  )
  \ PRIVMSG\      #
  # channel
  (?P<channel>
    \#\w+
  )
  \ : \           #
  # message itself:
  (?P<message>
    .*
  )$
""", re.VERBOSE | re.UNICODE)

text = ":nick!~ident@host PRIVMSG #channel : test message"

match = irc_pat.match(text)

if match:
  print match.groups()
  # or match.group('nickname'), match.group('identifier'), etc