import Foundation
let pattern = #"<meta\s*name="(.*)".*content="(.*)"\s*\/>"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = ##"""
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="geo.placename" content="11-12 BAYPORT PL, QUEENS, NY" />
<meta name="geo.position" content="40.6046019;-73.7494738" />
<meta name="geo.region" content="US;NY" />
<meta name="ICBM" content="40.6046019, -73.7494738" />
<style type='text/css'>
h2.title {
font-size: 130%;
background: #eee;
margin:0.2em 0;
padding:0.5em;
border: 3px solid #dcdcdc;
}
.crime-info {
font-size: 130%;
background: #eee;
margin:0.2em 0;
padding:0.5em;
border: 2px solid #dcdcdc;
}
.alerts ul {
padding-left: 1em;
clear: both;
margin: 20px 0;
}
.alerts li {
float: left;
width: 45%;
margin: 0;
padding: 0 0 0 0.4em;;
}
div.google_ads_sidebar {
margin-bottom: 10px;
width: 210px !important;
text-align: center;
padding: 5px !important;
}
</style>
<script type='text/javascript'>
//<![CDATA[
try {
if (screen.width <= 420) {
window.location = "//spotcrime.com/mobile/crime/?95215796-5c02086a20e817cf1bb5a978a2c10720";
}
}
catch(err) {
}
//]]>
</script>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content='width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=false'/>
<title>Theft - 11-12 BAYPORT PL, QUEENS, NY</title>
<meta name="description" content="Theft - 11-12 BAYPORT PL, QUEENS, NY. Grand Larceny Auto. Of Auto"/>
<meta name="keywords" content="Theft,11-12 BAYPORT PL, QUEENS, NY,Queens, crime map, crime in, crimes, neighborhood crime, crime report, neighborhood crime watch, crime analysis, crime analytics, crime analysis tools, home security"/>
<!-- meta name="verify-v1" content="3e644NZNzIcRb+ZulOwM2nkI/b49EltodgfuV4+Vxk4="-->
<meta name="verify-v1" content="KDp+ufgA8DHe89GWmW1UZHRb1nXg9qu6YnQFofzYwgA=" />
<link rel="shortcut icon" href="//s3.amazonaws.com/s3.spotcrime.com/media/style/favicon.ico" type="image/x-icon" />
<link rel="icon" href="//s3.amazonaws.com/s3.spotcrime.com/media/style/favicon.ico" type="image/x-icon" />
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<!-- Optional theme -->
<!-- link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css" -->
<!-- Custom styles for this template -->
<link href="//s3.amazonaws.com/m.spotcrime.com/mobile/media/v1/css/mobile.css" rel="stylesheet">
<link href="//s3.amazonaws.com/s3.spotcrime.com/desktop/media/v1/desktop.css" rel="stylesheet">
<style type="text/css">
/* overwrite mobile css */
.main-content {
text-align: left;
}
.main-content-column {
margin-top: 2em;
}
</style>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top spotcrime-header">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand spotcrime-navbar-brand" href="/">Spotcrime</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-spotcrime">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Browse By State <span class="caret"></span></a>
<ul id="states-list-menu" class="dropdown-menu" role="menu" style="z-index: 1000;">
<li><a href="/al" >Alabama</a></li>
<li><a href="/ak" >Alaska</a></li>
<li><a href="/az" >Arizona</a></li>
<li><a href="/ar" >Arkansas</a></li>
<li><a href="/ca" >California</a></li>
<li><a href="/co" >Colorado</a></li>
<li><a href="/ct" >Connecticut</a></li>
<li><a href="/de" >Delaware</a></li>
<li><a href="/dc" >District of Columbia</a></li>
<li><a href="/fl" >Florida</a></li>
<li><a href="/ga" >Georgia</a></li>
<li><a href="/hi" >Hawaii</a></li>
<li><a href="/id" >Idaho</a></li>
<li><a href="/il" >Illinois</a></li>
<li><a href="/in" >Indiana</a></li>
<li><a href="/ia" >Iowa</a></li>
<li><a href="/ks" >Kansas</a></li>
<li><a href="/ky" >Kentucky</a></li>
<li><a href="/la" >Louisiana</a></li>
<li><a href="/me" >Maine</a></li>
<li><a href="/md" >Maryland</a></li>
<li><a href="/ma" >Massachusetts</a></li>
<li><a href="/mi" >Michigan</a></li>
<li><a href="/mn" >Minnesota</a></li>
<li><a href="/ms" >Mississippi</a></li>
<li><a href="/mo" >Missouri</a></li>
<li><a href="/mt" >Montana</a></li>
<li><a href="/ne" >Nebraska</a></li>
<li><a href="/nv" >Nevada</a></li>
<li><a href="/nh" >New Hampshire</a></li>
<li><a href="/nj" >New Jersey</a></li>
<li><a href="/nm" >New Mexico</a></li>
<li><a href="/ny" >New York</a></li>
<li><a href="/nc" >North Carolina</a></li>
<li><a href="/nd" >North Dakota</a></li>
<li><a href="/oh" >Ohio</a></li>
<li><a href="/ok" >Oklahoma</a></li>
<li><a href="/or" >Oregon</a></li>
<li><a href="/pa" >Pennsylvania</a></li>
<li><a href="/ri" >Rhode Island</a></li>
<li><a href="/sc" >South Carolina</a></li>
<li><a href="/sd" >South Dakota</a></li>
<li><a href="/tn" >Tennessee</a></li>
<li><a href="/tx" >Texas</a></li>
<li><a href="/ut" >Utah</a></li>
<li><a href="/vt" >Vermont</a></li>
<li><a href="/vi" >Virgin Islands</a></li>
<li><a href="/va" >Virginia</a></li>
<li><a href="/wa" >Washington</a></li>
<li><a href="/wv" >West Virginia</a></li>
<li><a href="/wi" >Wisconsin</a></li>
<li><a href="/wy" >Wyoming</a></li>
<li><a href="/pr" >Puerto Rico</a></li>
<li><a href="/vi" >Virgin Islands</a></li>
</ul>
</li>
<li><a href="http://crimetip.us/" target="_blank">Submit a Crime Tip</a></li>
<li class="auth-hidden"><a href="/login.php">Sign In</a></li>
<li class="auth-hidden"><a href="#" data-toggle="modal" data-target="#SignupModal">Sign Up</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
<div class="container search-form-container">
<div class="col-md-8 col-md-offset-2">
<form class="navbar-form crime-search-secondary" action='/' method="get" onsubmit="return false;">
<div class="form-group" style="display:inline;">
<div class="input-group" style="display:table;">
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search search-placeholder"></span></span>
<input class="form-control" name="crime-address-secondary" placeholder="Address" type="text">
<span class="input-group-addon search-placeholder" style="width:1%;"><button type="submit" class="btn btn-link" style="padding: 0; margin:0; border: 0;">search crimes</button></span>
</div>
</div>
</form>
</div>
</div> <!-- search-form-container -->
</nav>
<div class="container main-container" style="padding-bottom: 150px; margin-top: 2em; ">
<div class="main-content">
<div class="row">
<div class="col-sm-8 col-md-10">
<!-- 2015 new format details pages top -->
<ins class="adsbygoogle"
style="display:block; height:60px;"
data-ad-client="ca-pub-7922093619579857"
data-ad-slot="7369226943"
data-ad-format="horizontal"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script> <div class="main-content-column">
<div class="crime-info">
<div class="row">
<div class="col-md-3 text-left">
<h1>Theft</h1>
<p>07/16/2017 02:00 PM</p>
</div>
<div class="col-md-9 text-left">
<p style="border-left: solid 5px #DCDCDC; margin-left: 5px; padding-left: 10px;">
11-12 BAYPORT PL, QUEENS, NY<br /><em>Grand Larceny Auto. Of Auto
</em><br /><a class="btn btn-default" title="View Source" target="_blank" href="https://compstat.nypdonline.org/2e5c3f4b-85c1-4635-83c6-22b27fe7c75c/view/89">View Source</a> </p>
</div> <!-- col-md-8 -->
</div> <!-- row -->
</div> <!-- crime-info -->
<div class="crime_details">
<div class="row">
<div class="col-md-12">
<div id="map_canvas" class="col-xs-8 text-center" style="background-color: #E9E5DC; width: 100%; height: 300px; ">Map is loading...</div>
</div>
</div>
<div style="margin-top: 0.1em; margin-bottom: 0.1em;">
<!-- 2015 new format test bottom responsive -->
<ins class="adsbygoogle"
style="display:block; height:60px;"
data-ad-client="ca-pub-7922093619579857"
data-ad-slot="5232383340"
data-ad-format="horizontal"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
<div class="row">
<div class="col-md-12">
<div id="streetview_canvas" style="width: 100%; height: 300px"></div>
<div class="disclaimer" style="color: #000000; font-size: 100%; background-color: #fffa73;">
Google Streetview Disclaimer: This is a Google Maps Street View of the approximate area where the crime occurred. It is not necessarily the exact address view of the crime.
</div>
</div>
</div>
<div style="padding: 15px;">
<div class="row" style="border-bottom: 2px solid #FFF;">
<div class="col-md-12" itemscope itemtype="http://schema.org/Place" style="background: #EEEEEE;">
<h1 itemprop="name">Theft - 11-12 BAYPORT PL, QUEENS, NY</h1>
<p itemprop="description">Grand Larceny Auto. Of Auto</p>
<p itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">11-12 BAYPORT PL</span>,
<span itemprop="addressLocality">Queens</span>,
<span itemprop="addressRegion">NY</span>
<span itemprop="postalCode"></span>
<span itemprop="addressCountry">US</span>
</p>
<span itemprop="geo" itemscope itemtype="http://schema.org/GeoCoordinates">
<meta itemprop="latitude" content="40.6046019" />
<meta itemprop="longitude" content="-73.7494738" />
</span>
</div>
</div> <!-- row -->
</div>
</div>
<div style="clear: both;"></div>
</div> <!-- main-content-column -->
</div> <!-- col-md-10 -->
<div class="col-sm-4 col-sm-4 col-md-2 text-left;">
<div class="row" style="margin-bottom: 0.3em;">
<div class="col-md-12">
<a class="btn btn-primary" role="button" style="width: 100%;" href="mailto:?subject=Theft%20-%2011-12%20BAYPORT%20PL%2C%20QUEENS%2C%20NY&body=I%20want%20to%20share%20this%20crime%20with%20you%3A%0a%0ahttp://spotcrime.com/crime/95215796-5c02086a20e817cf1bb5a978a2c10720%0aGrand%20Larceny%20Auto.%20Of%20Auto">Email to a friend</a> <br />
</div>
</div>
<div class="row" style="margin-bottom: 0.3em;">
<div class="col-md-12">
<a href="http://crimetip.us" target="_blank" title="Submit a Crime Tip" class="btn btn-danger" role="button" style="width: 100%;">Submit a Crime Tip</a>
</div>
</div>
<!-- 2015 new format detail pages skyscraper -->
<ins class="adsbygoogle"
style="display:inline-block;width:300px;height:600px"
data-ad-client="ca-pub-7922093619579857"
data-ad-slot="1322693346"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script> </div> <!-- col-md-2 -->
</div> <!-- row -->
</div> <!-- /.main-content -->
</div><!-- /.container -->
<nav class="navbar navbar-default navbar-fixed-bottom">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-bottom" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div id="navbar-bottom" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="/help.php">Help</a></li>
<li><a href="/contact.php">Contact</a></li>
<li><a target="_blank" href="http://spotcrime.blogspot.com/">Blog</a></li>
<li><a href="/about.php">About Us</a></li>
<li><a href="/tos/">Terms of Use</a></li>
<li><a href="/privacy/">Privacy Policy</a></li>
<li><a href="/disclaimer.html">Disclaimer</a></li>
<li><a style="padding-left: 5px; padding-right: 5px;" href="https://facebook.com/crimemap" target="_blank"><img alt="facebook" src="//s3.amazonaws.com/s3.spotcrime.com/media/layout-v2/images/fb-icon.png"></a></li>
<li><a style="padding-left: 5px; padding-right: 5px;" href="https://twitter.com/spotcrime" target="_blank"><img alt="twitter" src="//s3.amazonaws.com/s3.spotcrime.com/media/layout-v2/images/twitter-icon.png"></a></li>
<li><a style="padding-left: 5px; padding-right: 5px;" href="https://www.youtube.com/user/SpotTube1" target="_blank"><img alt="youtube" src="//s3.amazonaws.com/s3.spotcrime.com/media/layout-v2/images/yt-icon.png"></a></li>
<li><a style="padding-left: 5px; padding-right: 5px;" href="https://plus.google.com/100880401142331549679" target="_blank"><img alt="google plus" src="//s3.amazonaws.com/s3.spotcrime.com/media/layout-v2/images/gp-icon.png"></a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<!-- Modal -->
<div class="modal" id="SignupModal" tabindex="-1" role="dialog" aria-labelledby="SignupModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form class="form" action='javascript:signupAlerts();'>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="SignupModalLabel">Signup To Receive Crime Alerts</h4>
</div>
<div class="modal-body">
<div class="alert alert-danger errors" role="alert" style="display: none;"></div>
<div class="form-group">
<label class="sr-only" for="email">Email address</label>
<input type="text" class="form-control" id="email" placeholder="Enter email">
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-danger btn-lg">Get Alerts</button>
<button type="button" class="btn btn-default btn-lg" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal" id="SubscribedModal" tabindex="-1" role="dialog" aria-labelledby="SubscribedModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form class="form" action='javascript:signupAlerts();'>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="SubscribedModalLabel">Thank you for the subscription!</h4>
</div>
<div class="modal-body">
<div class="alert alert-success info" role="alert"></div>
<div class="alert alert-warning" role="alert">Please check your inbox to confirm your subscription.</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default btn-lg" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="//s3.amazonaws.com/s3.spotcrime.com/desktop/media/v1/desktop.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-85587602-1', 'auto');
ga('send', 'pageview');
</script>
<script src='//maps.google.com/maps/api/js?key=AIzaSyABnRyO3EYI4o4t4Bz6fngF7tw30UGXVx0' type='text/javascript'></script>
<script type="text/javascript">
// Enable the visual refresh
google.maps.visualRefresh = true;
function initialize() {
var crime_location = new google.maps.LatLng( 40.60460190000000,-73.74947380000000);
var mapOptions = {
zoom: 14,
center: crime_location,
disableDoubleClickZoom: true
}
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var marker = new google.maps.Marker({
map: map,
position: crime_location
});
// Google StreetView
var panoramaOptions = {
position: crime_location,
pov: {
heading: 34,
pitch: 10
}
};
var panorama = new google.maps.StreetViewPanorama(document.getElementById('streetview_canvas'), panoramaOptions);
google.maps.event.addListener(panorama, 'error', handleNoFlash);
map.setStreetView(panorama);
function handleNoFlash(errorCode) {
if (errorCode == 603) {
document.getElementById("streetview_canvas").innerHtml = "You need Adobe Flash to view StreetView";
return;
} else
if (errorCode == 600) {
// Update a "Google Streetview Loading..." text
document.getElementById("streetview_canvas").innerHtml = "";
return;
} else {
// Update a "Google Streetview Loading..." text
document.getElementById("streetview_canvas").innerHtml = "";
return;
}
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</body>
</html>
"""##
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