Python - 从Socket数据中提取正则表达式通配符?
我有一个关于Python中正则表达式的问题。这些表达式是从通过socket连接的服务器读取的数据。我想在这些表达式中使用和读取通配符。例如:假设我在运行一个聊天服务器。当收到一条消息时,服务器会把消息发送给所有客户端(比如JSmith发送了“大家好!”)。
我的问题是,如果有多个用户名(不仅仅是JSmith),我该如何让客户端程序读取服务器发送的数据,而不是写成“[用户名]发送了‘大家好!’”,而是写成“[这里是用户名]: 大家好!”?
有没有办法把正则表达式中的通配符数据存储到变量里?
1 个回答
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'))