import Foundation
let pattern = #"Call-ID: (?P<method>[A-Za-z0-9_]+)-"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
-------------------------- LTETAS99A --------------------------
SUNGSU 2019-10-14 13:33:45.554 MON ON LTETASOMP99
MSIPX3 RECV REQUEST FROM 172.28.109.98:5067
Src Addr : <211.188.227.6:8102> Dest Addr : <211.188.227.6:5083>
From : <01052938592>
To : <01020259013>
Size : 2206 Bytes (sip:1740, body:466)
SIP MSG ::=
{
INVITE tel:01020259013;phone-context=sktims.net SIP/2.0
INVITE sip:01089186220@sktims.net SIP/2.0
BYE sip:CSM1MSIPX1@172.28.109.115:5073;tu=3 SIP/2.0
REGISTER sip:rvtas22.sktims.net;lr SIP/2.0
REGISTER sip:scscf24.sktims.net;lr SIP/2.0
INVITE tel:01054736915;phone-context=sktims.net SIP/2.0
INVITE sip:ivr@icrbt08.sktims.net SIP/2.0
INVITE tel:01054736915;phone-context=sktims.net SIP/2.0
INVITE sip:01054736915@sktims.net SIP/2.0
INVITE sip:01054736915@sktims.net SIP/2.0
ACK sip:pointi_service@192.168.152.88:5060 SIP/2.0
PRACK sip:CSM1MSIPX2@223.38.5.33:5072;tu=2;orig SIP/2.0
PRACK sip:CSM1MSIPX1@223.38.5.32:5073;tu=2 SIP/2.0
PRACK sip:CSM1MSIPX1@223.38.5.32:5073;tu=2 SIP/2.0
INFO sip:pointi_service@192.168.152.88:5060 SIP/2.0
INFO sip:MSIPX@223.38.5.32:5075;tu=2;mrf SIP/2.0
BYE sip:pointi_service@192.168.152.88:5060 SIP/2.0
ACK sip:CSM1MSIPX2@223.38.5.33:5072;tu=2;orig SIP/2.0
ACK sip:CSM1MSIPX1@223.38.5.32:5073;tu=2 SIP/2.0
ACK sip:CSM1MSIPX1@223.38.5.32:5073;tu=2 SIP/2.0
ACK sip:01054736915@172.28.109.82:5180 SIP/2.0
Record-Route: <sip:SCSM3-ut00so-tu11@172.28.109.98:5067;lr>
Route: <sip:orig@otas99.sktims.net;lr>
Route: <sip:SCSM3-orig-tu111571027625-45014022@172.28.109.98:5067;lr>
Via: SIP/2.0/UDP 172.28.109.98:5067;branch=z9hG4bK%11%%SCSM3-tu11-cmo-rru'SCSM3-ut00so-tu11'%7fdfdbcfb8e0437a1359_7c935;received=211.188.227.6;rport=8102
Via: SIP/2.0/UDP 172.28.109.89:5180;branch=z9hG4bK7fd208892a703e0cad3e_6fba8
P-Asserted-Identity: sip:01052938592@sktims.net
Max-Forwards: 68
To: <tel:01020259013;phone-context=sktims.net>
From: <sip:01052938592@sktims.net>;tag=36df023a
From: <tel:01085222359;phone-context=sktims.net>;tag=2a4f25f7e38c1
From: <sip:114@sktims.net>;tag=337259
From: "SKi…”e??i½¤e³?e°?i?¼i?°"<sip:114@sktims.net>;tag=62a4a407689e7
Call-ID: H_ABC242A-nDcgZ_h6tWoSp7HAheBprQ..@2001:2d8:234:aa35::56a1:70a5
Call-ID: SCSM1-H_ABC231A-44fkaDYDRUtGXwlkoMaWzg..@2001:2d8:e90f:ab33::24fe:e0a4
Call-ID: H_ABC231A-44fkaDYDRUtGXwlkoMaWzg..@2001:2d8:e90f:ab33::24fe:e0a4
Call-ID: SCSM1-H_ABC231A-44fkaDYDRUtGXwlkoMaWzg..@2001:2d8:e90f:ab33::24fe:e0a4
Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: TT22C112_OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: TT22C112_OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: TT22C112_OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32
Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32
Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32
Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32
Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32
Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: MR22I1X2_0760e01b-c49730-955496be5d-B3F97470-e4a-a4330-005ff403@223.38.5.32
Call-ID: TT22C112_OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: OT23C122_ob2bua-8V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
Call-ID: TT22C112_OT23C122_ob2bua-V4536iZxSmCHgMmCJfk2w..@2001:2d8:6557:4c99::110:c855
CSeq: 1 INVITE
Session-Expires: 1800;refresher=uac
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, UPDATE, INFO, REFER, NOTIFY, MESSAGE, PRACK
Content-Type: application/sdp
Supported: timer, 100rel, sec-agree
User-Agent: TTA-VoLTE/3.0 SM-G977N/SH6_SH6 Device_Type/Android_Phone SKT
Accept-Contact: *;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";require;explicit
P-Early-Media: supported
P-TTA-VoLTE-Info: avchange
P-Access-Network-Info: 3GPP-E-UTRAN-FDD;utran-cell-id-3gpp=45005080a074af8b
Content-Length: 466
Contact: <sip:01052938592-517b78dfb70cccf4@172.28.109.89:5180;ep=[2001:2d8:234:aa35::56a1:70a5]:6200;fw=[2001:2d8:234:aa35::56a1:70a5]:6200;ipsec>;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";video
P-Served-User: <sip:01052938592@sktims.net>;sescase=orig;regstate=reg
P-Charging-Vector: icid-value="abc24.sktims.net-s-6d9061000e2d4be3"
P-Asserted-Service: urn:urn-7:3gpp-service.ims.icsi.mmtel
P-Charging-Function-Addresses: ccf="aaa://imscg4.sktims.net"; ccf="aaa://imscg3.sktims.net"
v=0
o=abc 1571027623778107 0 IN IP4 172.28.107.172
s=-
c=IN IP4 172.28.107.172
t=0 0
m=audio 46284 RTP/AVP 110 100 98 103 101
b=AS:42
b=RS:0
b=RR:800
a=rtpmap:110 EVS/16000
a=fmtp:110 br=9.6-24.4;bw=nb-swb
a=rtpmap:100 AMR-WB/16000/1
a=fmtp:100 octet-align=1
a=rtpmap:98 AMR/8000/1
a=fmtp:98 octet-align=1
a=rtpmap:103 telephone-event/16000
a=fmtp:103 0-15
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
a=ptime:20
a=maxptime:120
}
COMPLETED
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression