我对Python中的正则表达式有疑问。表达式由可从服务器读取的数据组成,通过套接字连接。我正试图在这些表达式中使用和读取通配符。示例:假设我运行聊天服务器。收到消息后,服务器将发送给所有客户端(JSmith发送“Hello everyone!”)。
我的问题是,如果有多个用户名(不仅仅是JSmith),我怎么能让客户端程序读取服务器发送的数据,而不是写“[username]发送”大家好!“,有它写“[usernamehere]:大家好!”?
有没有办法将正则表达式通配符中的数据存储到变量中?
答案 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'))