import Foundation
let pattern = #"{tex\b([^{}]*({[^{}]*?([^{}]|(?R))*[^{}]*?}[^{}]*)*[^{}]*)}"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = ##"""
# This is currently a test
{nav Home}
The statistical model estimated the probability, {tex f(x) = \int_{-\infty}
^\infty \hat f(\xi)\,e^{2 \pi \xi x} \,d\xi }, of capturing dolphins on a tow, {tex i}. A year effect, {tex \lambda_{acb_{j}}} was estimated for each year, {tex j}, allowing for annual variation in the capture event rates that was unrelated to the covariates, {tex x}. The contribution of each covariate, indexed by {tex c}, was governed by a regression coefficient, {tex \beta_c}, that was estimated by the model. The logit transform of the capture event probability was defined as the sum of the year effect, {tex \lambda_{lam} {lam} }, and the covariates:
{tex \lambda_{lam}{lam} }
{tex \lambda_{lam} {lam} }
{tex \lambda_{lam}{lam}}
katex {{{
logit(\pi_i) = \lambda_{j[i]} + \sum_c \beta_c x_{ic}.
}}}
determines the result.
# The following is more tests
katex {{{
f(x) = \int_{-\infty}^\infty
\hat f(\xi)\,e^{2 \pi i \xi x}
\,d\xi
}}}
katex {{{
\begin{bmatrix}
a & b \\
c & a
\end{bmatrix}
}}}
katex {{{
\begin{bmatrix}
a & c \\
c & a
\end{bmatrix}
}}}
"""##
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