import Foundation
let pattern = #"[a-zA-ZāīūṅñṭḍṇḷṃĀĪŪṄÑṬḌHṆḶṂ]+(?![^<>]*>)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
<p class="noindentbodytext"> gotamo<a name="M0.0002"></a> brāhmaṇe jiṇṇe vuḍḍhe mahallake addhagate vayoanuppatte abhivādeti vā paccuṭṭheti vā āsanena vā nimantetī’ti. tayidaṃ, bho gotama, tatheva? na hi bhavaṃ gotamo brāhmaṇe jiṇṇe vuḍḍhe mahallake addhagate vayoanuppatte abhivādeti vā paccuṭṭheti vā āsanena vā nimanteti? tayidaṃ, bho gotama, na sampannamevā"ti.</p>
<p class="bodytext">"nāhaṃ taṃ, brāhmaṇa, passāmi sadevake loke samārake sabrahmake sassamaṇabrāhmaṇiyā pajāya sadevamanussāya yamahaṃ abhivādeyyaṃ vā paccuṭṭheyyaṃ vā āsanena vā nimanteyyaṃ. yañhi, brāhmaṇa, tathāgato abhivādeyya vā paccuṭṭheyya vā āsanena vā nimanteyya, muddhāpi tassa vipateyyā"ti.</p>
<p class="bodytext"><a name="para3"></a><a name="para3_vin1"></a><span class="paranum">3</span>. "arasarūpo bhavaṃ gotamo"ti? "atthi khvesa, brāhmaṇa, pariyāyo yena maṃ pariyāyena sammā vadamāno vadeyya <a name="T1.0003"></a> – ‘arasarūpo samaṇo gotamo’ti. ye te, brāhmaṇa, rūparasā saddarasā gandharasā rasarasā phoṭṭhabbarasā te tathāgatassa pahīnā ucchinnamūlā tālāvatthukatā anabhāvaṃkatā <span class="note">[anabhāvakatā (sī.) anabhāvaṃgatā (syā.)]</span> āyatiṃ anuppādadhammā. ayaṃ kho, brāhmaṇa, pariyāyo yena maṃ pariyāyena sammā vadamāno vadeyya – ‘arasarūpo samaṇo gotamo’ti, no ca kho yaṃ tvaṃ sandhāya vadesī"ti.</p>
<p class="bodytext"><a name="para4"></a><a name="para4_vin1"></a><span class="paranum">4</span>. "nibbhogo bhavaṃ gotamo"ti? "atthi khvesa, brāhmaṇa, pariyāyo yena maṃ pariyāyena sammā vadamāno vadeyya – ‘nibbhogo samaṇo gotamo’ti. ye te, brāhmaṇa, rūpabhogā saddabhogā gandhabhogā rasabhogā phoṭṭhabbabhogā te tathāgatassa pahīnā ucchinnamūlā tālāvatthukatā anabhāvaṃkatā āyatiṃ anuppādadhammā. ayaṃ kho, brāhmaṇa, pariyāyo yena maṃ pariyāyena sammā vadamāno vadeyya – ‘nibbhogo samaṇo gotamo’ti, no ca kho yaṃ tvaṃ sandhāya vadesī"ti.</p>
<p class="bodytext"><a name="para5"></a><a name="para5_vin1"></a><span class="paranum">5</span>. "akiriyavādo <a name="V0.0003"></a> bhavaṃ gotamo"ti? "atthi khvesa, brāhmaṇa, pariyāyo yena maṃ pariyāyena sammā vadamāno vadeyya – ‘akiriyavādo samaṇo gotamo’ti. ahañhi, brāhmaṇa, akiriyaṃ vadāmi</p>
"""#
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