2010-08-31 30 views
1

我有一个关于Python中正则表达式的问题。表达式由从服务器读取的数据组成,通过套接字连接。我试图在这些表达式中使用和阅读通配符。示例:假设我运行聊天服务器。当收到消息时,服务器发送给所有客户端(JSmith发送“Hello everyone!”)。我的问题是,如果有多个用户名(不只是JSmith),我怎么让客户端程序读取服务器发送的数据,而不是写“[用户名]发送”大家好!“,有写“[usernamehere]:大家好”?来自Socket数据的Python - 正则表达式通配符?

有从正则表达式通配符数据存储到变量的方式

+0

您是否在寻找术语“(命名)捕获组”? – relet 2010-08-31 17:30:57

回答

1

如果数据总是这么简单,你不需要使用正则expresssions完全可以:

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

随着普通的expr会话(使用命名表达式):

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'))