import Foundation
let pattern = #"var .*?Scope.*?=[\s\S]*?{([\s\S]*?)};[\s\S]*?var .*?Directive.*?=[\s\S]*?{([\s\S]*?)};[\s\S]*?encModule.directive\(['"](.*?)['"][\s\S]*"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
//------------------------------------------------------------------
// PrivacyAgreementDialogDirective.js
// Copyright 2013 AppliedMinds, Inc.
//------------------------------------------------------------------
"use strict";
//------------------------------------------------------------------
// Map of attributes to be copied into the scope.
var privacyAgreementDialogScope =
{
};
//------------------------------------------------------------------
// Configuration of the privacyAgreementDialog directive.
var privacyAgreementDialogDirective =
{
'restrict' : 'E',
'transclude' : true,
'scope' : privacyAgreementDialogScope,
'controller' : 'PrivacyAgreementDialogCtrl',
'templateUrl' : 'encirca/common/privacyAgreementDialog/PrivacyAgreementDialog.html',
'replace' : true
};
//------------------------------------------------------------------
// Create the directive.
encModule.directive('privacyAgreementDialog',
enc.func.returns(privacyAgreementDialogDirective));
"""#
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