Python - 来自Socket数据的正则表达式通配符?

时间:2010-08-31 17:27:04

标签: python regex chat wildcard

我对Python中的正则表达式有疑问。表达式由可从服务器读取的数据组成,通过套接字连接。我正试图在这些表达式中使用和读取通配符。示例:假设我运行聊天服务器。收到消息后,服务器将发送给所有客户端(JSmith发送“Hello everyone!”)。

我的问题是,如果有多个用户名(不仅仅是JSmith),我怎么能让客户端程序读取服务器发送的数据,而不是写“[username]发送”大家好!“,有它写“[usernamehere]:大家好!”?

有没有办法将正则表达式通配符中的数据存储到变量中?

1 个答案:

答案 0 :(得分:1)

如果数据总是那么简单,则根本不需要使用常规表达式:

line = 'JSmith sends "Hello everyone!"'
user, data = line.split(' sends ', 1)
# remove the quotes
data = data[1:-1]
print "%s: %s" % (user, data)

使用正则表达式(使用命名表达式):

import re
line = 'JSmith sends "Hello everyone!"'
chatre = re.compile('^(?P<user>\S+) sends "(?P<data>.*)"$')
m = chatre.match(line)
if m:
    print "%s: %s" % (m.group('user'), m.group('data'))