import Foundation
let pattern = #"(<(?!(li|ul))[^>]+) style=".*?""#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = ##"""
<p class="BodyTextIndent3">
<strong>[To do]</strong> Style we need to have work in Tech zone: “Body Text Indent 2” so that we can indent paragraphs under a sub-step or sub-bullet, such as a paragraph containing a graphic.
</p>
<ul style="margin:0pt; padding-left:0pt">
<li class="ListParagraph" style="margin-left:27.14pt; text-indent:0pt; padding-left:8.86pt; font-family:serif">
<span style="font-family:'Metropolis Light'">This is a first-level bullet item (that works right now) created by using the </span><strong><span style="font-family:'Metropolis Light'; ">List Paragraph and then clicking the Bullet button in the toolbar</span></strong><span style="font-family:'Metropolis Light'">. Then, if you want to create sub-bullets, just also press the Tab key, like this:</span>
<ul style="margin-right:0pt; margin-left:0pt; padding-left:0pt">
<li class="ListParagraph" style="margin-left:28.4pt; text-indent:0pt; padding-left:7.6pt">
<span style="font-family:'Metropolis Light'">This is a sub-bullet by using the </span><strong><span style="font-family:'Metropolis Light'; ">List Paragraph style, using a bulleted list and then pressing Tab</span></strong><span style="font-family:'Metropolis Light'">. If you press Return now, you will get another sub-bullet.</span>
<ul style="margin-right:0pt; margin-left:0pt; padding-left:0pt">
<li class="ListParagraph" style="margin-left:27.12pt; text-indent:0pt; padding-left:8.88pt">
<span style="font-family:'Metropolis Light'">This is a sub-bullet by using the </span><strong><span style="font-family:'Metropolis Light'; ">List Paragraph style, using a bulleted list and then pressing Tab twice</span></strong><span style="font-family:'Metropolis Light'">. If you press Return now, you will get another sub-sub-bullet.</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p class="BodyText">
Following are some examples taken from the RA appendixes. We need enough styles so that we can get these to work on Tech zone:
</p>
<p class="BodyText">
To configure the cluster quorum settings:
</p>
<ol style="margin:0pt; padding-left:0pt">
<li class="ListParagraph" style="margin-left:33.8pt; text-indent:0pt; padding-left:2.2pt">
Configure quorum votes for Site 1:
<ol style="margin-right:0pt; margin-left:0pt; padding-left:0pt; list-style-type:lower-latin">
<li class="ListParagraph" style="margin-left:33.8pt; text-indent:0pt; padding-left:2.2pt">
Open Failover Cluster Manager and select<span style="font-family:Cambria"> </span><strong>More Actions</strong><span style="font-family:Cambria"> </span>><span style="font-family:Cambria"> </span><strong>Configure Cluster Quorum Settings</strong>.
</li>
<li class="ListParagraph" style="margin-left:33.8pt; text-indent:0pt; padding-left:2.2pt">
Complete the Configure Cluster Quorum Wizard, using the following guidelines:
</li>
</ol>
</li>
</ol>
"""##
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let substitutionString = #""#
let result = regex.stringByReplacingMatches(in: testString, range: stringRange, withTemplate: substitutionString)
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