Я использую это регулярное выражение для URI SIP (Session Initiation Protocol) для извлечения разных внутренних переменных.Извлечение некоторых заголовков SIP
_syntax = re.compile('^(?P<scheme>[a-zA-Z][a-zA-Z0-9\+\-\.]*):' # scheme
+ '(?:(?:(?P<user>[a-zA-Z0-9\-\_\.\!\~\*\'\(\)&=\+\$,;\?\/\%]+)' # user
+ '(?::(?P<password>[^:@;\?]+))?)@)?' # password
+ '(?:(?:(?P<host>[^;\?:]*)(?::(?P<port>[\d]+))?))' # host, port
+ '(?:;(?P<params>[^\?]*))?' # parameters
+ '(?:\?(?P<headers>.*))?$') # headers
m = URI._syntax.match(value)
if m:
self.scheme, self.user, self.password, self.host, self.port, params, headers = m.groups()
и я хочу, чтобы извлечь конкретный заголовок как заголовок через, ветви, контакт, CallID или CSeq. Общего вид сообщения глотки является:
OPTIONS sip:172.16.18.35:5060 SIP/2.0
Content-Length: 0
Via: SIP/2.0/UDP 172.16.18.90:5060
From: "fake" <sip:[email protected]>
Supported: replaces, timer
User-Agent: SIPPing
To: <sip:172.16.18.35:5060>
Contact: <sip:[email protected]:5060>
CSeq: 1 OPTIONS
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Call-ID: [email protected]
Date: Thu, 25 Apr 2013 003024 +0000
Max-Forwards: 70
«Форматирование кода» для будущей заметки полностью подходит для многострочного литерала, такого как сообщение SIP (необязательно с отключением подсветки синтаксиса комментария формы « ', предшествующий). Если бы вы форматировали сообщение таким образом, содержимое, такое как адреса «To» и «Contact» (отформатированные таким образом, который выглядит как теги HTML), не будет отсутствовать. –