import Foundation
let pattern = #"^([\s]{2,})(?!.*[&@])(.*?)([,{])\n"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = ##"""
#term-header {
padding: 20px 0 17px;
margin: 0 10px 30px;
&::before,
&::after {
margin-left: -11px;
border-width: 12px 10.5px 0 10.5px;
}
&::before {
bottom: -12px;
}
&::after {
bottom: -10px;
}
h1 {
font-size: 20px;
span {
font-size: 27px;
}
}
dl {
margin: 20px 0 0;
dt {
width: 100px;
}
dd {
font-size: 11px;
}
}
}
.slick-next,
.slick-prev {
width: 35px;
height: 35px;
}
.slick-prev {
left: 5px;
transform: translate3d(-30px, 0, 0);
&::after {
left: 14px;
}
}
.slick-next {
right: 5px;
transform: translate3d(30px, 0, 0);
&::after {
right: 14px;
}
}
.ready.inview {
.slick-prev {
&.slick-disabled {
transform: translate3d(-30px, 0, 0);
}
}
.slick-next {
&.slick-disabled {
transform: translate3d(30px, 0, 0);
}
}
}
.wp-editor {
font-family: var(--fontFamily);
font-size: var(--fontSize);
line-height: var(--lineHeight);
& h3,
& h4,
& p {
margin: var(--wpEditorMargin) 0;
overflow: hidden;
&:first-child {
margin-top: 0;
}
&:last-child {
margin-bottom: 0;
}
}
& h3 {
font-size: 14px;
}
& h4 {
font-size: 13px;
}
& a {
color: var(--linkColor);
text-decoration: underline;
&:hover {
text-decoration: none;
}
}
& img {
max-width: 100%;
height: auto;
}
& blockquote {
padding-left: 15px;
margin: var(--wpEditorMargin) 0;
font-weight: bold;
border-left: 5px solid var(--borderColor);
@media (--viewport-medium) {
padding-left: 35px;
}
}
}
"""##
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