2010-08-31 57 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'))