import Foundation
let pattern = #"(?<=\[\[).*(?=\]\])"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = ##"""
__NOTOC__
{{SubTOC|Titel=Liste von Autoren|Index=Liste von Autoren}}
== Aa ==
: [[Bertus Aafjes]] (1914–1993), NL
: [[Jeppe Aakjær]] (1866–1930), DK
: [[Johannes Aal]] (um 1500–1551), CH
: [[Hans Aanrud]] (1863–1953), NO
: [[Emil Aarestrup]] (1800–1856), DK
: [[Soazig Aaron]] (* 1949), FR
: [[Ivar Aasen]] (1813–1896), NO
== Ab ==
: [[Petrus Abaelardus]] (1079–1142), FR
: [[Sait Faik Abasıyanık]] (1906–1954), TR
: [[Lynn Abbey]] (* 1948), US
: [[Jacob Abbott]] (1803–1879), US
: [[John Stevens Cabot Abbott]] (1805–1877), US
: [[Abdullah bin Abdul Kadir]] (1795–1852), MAL
: [[Abe Kōbō]] (1924–1993), JP
: [[Rebecca Abe]] (* 1967), D
"""##
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