import Foundation
let pattern = #"<div class="listing-img-container media-cover text-center">[\s\S]*?src="([^"]+?\.jpg)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = ##"""
<div class="panel-body panel-card-section">
<div class="media">
<a href="/users/show/227945"
class="pull-right media-photo media-round card-profile-picture card-profile-picture-offset">
<img src="https://a0.muscache.com/ic/users/227945/profile_pic/1388936013/original.jpg?interpolation=lanczos-none&crop=w:w;*,*&crop=h:h;*,*&resize=68:*&output-format=jpg&output-quality=70" alt="">
</a>
<a href="/rooms/2945119?s=kOTS" class="text-normal">
<div title="Design 3BDR Rutera Flat by Old Town" class="h5 listing-name text-truncate row-space-top-1">
Design 3BDR Rutera Flat by Old Town
</div>
</a>
<div class="text-muted listing-location text-truncate"><a href="/rooms/2945119?s=kOTS" class="text-normal link-reset">
Entire home/apt · 21 reviews · Staré MÄ›sto, Prague
</a>
</div>
</div>
</div>
</div>
</div>
<div itemscope itemtype="http://schema.org/Enumeration" class="col-6 row-space-1">
<div data-lat="50.08928960447257"
data-lng="14.436735694282277"
data-name="Funky Central Art Apt with Terrace!"
data-url="/rooms/2688532?s=kOTS"
data-user="1037514"
data-id="2688532"
class="listing"
itemscope itemtype="http://schema.org/Enumeration">
<div class="panel-image listing-img">
<a href="/rooms/2688532?s=kOTS" class="media-photo media-cover">
<div class="listing-img-container media-cover text-center">
<img src="https://a0.muscache.com/airbnb/static/page3/v3/room_default_no_photos-d10f15172f4bf511e23e152ece74faaa.png" data-current="0" class="img-responsive-height hide" data-urls="["https://a2.muscache.com/ic/pictures/37070267/7555e7e6_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/35170017/c702a86e_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/37070259/4e7ef180_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/35170032/a0f198c9_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/37070286/2fee34b1_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/35170045/eba1336b_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/37070292/9ee05643_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/35170058/b9dc763d_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/37070298/cac270ba_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/35170068/abed8d24_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/37070305/77f5021f_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/35170087/0fae08f3_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/37070312/70835c4f_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/35170102/4290046e_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/37070326/14068f20_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/35170261/13b250d4_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/37070330/79e9df48_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/35170214/bb9ecd68_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/37070341/bf823f1b_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/35169982/0629a75b_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/37070352/cdf837f3_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/35170120/9e97e996_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/37070369/99ac0d0a_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/35170137/d0623b29_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/37071083/b7f61b16_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/35170162/6ce820a7_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/37071085/6d33eb21_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/35170183/c0016f10_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/37071088/42fafbe0_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/35170201/a196880c_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/37071098/7ad08efd_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/35170299/aac56da5_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/37071881/3a0a19ea_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a0.muscache.com/ic/pictures/35170277/17580bf8_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a2.muscache.com/ic/pictures/35170227/73939649_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70", "https://a1.muscache.com/ic/pictures/35170249/9d975bfb_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70"]">
</div>
</a>
<div class="target-prev target-control block-link">
<i class="icon icon-chevron-left icon-size-2 icon-white"></i>
</div>
<a class="target-details block-link
"
href="/rooms/2688532?s=kOTS"></a>
<div class="panel-overlay-bottom-left panel-overlay-label panel-overlay-listing-label">
<div>
<sup class="h6 text-contrast">Kč</sup>
<span class="h3 price-amount">1007</span>
<sup class="h6 text-contrast"></sup>
</div>
</div>
<div class="target-next target-control block-link">
<i class="icon icon-chevron-right icon-size-2 icon-white"></i>
</div>
<div class="panel-overlay-top-right wl-social-connection-panel">
<span class="rich-toggle wish_list_button wishlist-button"
data-img="https://a2.muscache.com/ic/pictures/37070267/7555e7e6_original.jpg?interpolation=lanczos-none&size=x_medium&output-format=jpg&output-quality=70"
data-name="Funky Central Art Apt with Terrace!"
data-address="Josefov, Prague"
data-hosting_id="2688532">
<input type="checkbox"
id="wishlist-widget-2688532"
name="wishlist-widget-2688532"
data-for-hosting="2688532">
<label for="wishlist-widget-2688532">
<i class="icon icon-heart icon-pink icon-rausch icon-size-2 rich-toggle-checked"></i>
<i class="icon icon-heart wishlist-heart-unchecked icon-size-2 rich-toggle-unchecked"></i>
<i class="icon icon-heart-alt icon-white icon-size-2"></i>
</label>
</span>
</div>
</div>
<div class="panel-body panel-card-section">
<div class="media">
<a href="/users/show/1037514"
class="pull-right media-photo media-round card-profile-picture card-profile-picture-offset">
<img src="https://a0.muscache.com/ic/users/1037514/profile_pic/1360186418/original.jpg?interpolation=lanczos-none&crop=w:w;*,*&crop=h:h;*,*&resize=68:*&output-format=jpg&output-quality=70" alt="">
</a>
<a href="/rooms/2688532?s=kOTS" class="text-normal">
<div title="Funky Central Art Apt with Terrace!" class="h5 listing-name text-truncate row-space-top-1">
Funky Central Art Apt with Terrace!
</div>
</a>
<div class="text-muted listing-location text-truncate"><a href="/rooms/2688532?s=kOTS" class="text-normal link-reset">
Entire home/apt · 38 reviews · Josefov, Prague
</a>
</div>
</div>
</div>
</div>
</div>
</div>
"""##
let stringRange = NSRange(location: 0, length: testString.utf16.count)
if let firstMatch = regex.firstMatch(in: testString, range: stringRange) {
let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) }
print(result)
} else {
print("No matches were found.")
}
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