import Foundation
let pattern = ###"(^## assemble\/assemble-boilerplate-markdown starts)([\s\S]*?)(^## assemble\/assemble-boilerplate-markdown ends)"###
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = ###"""
## assemble/assemble-boilerplate-markdown starts
## assemble/assemble-boilerplate-markdown ends
## assemble/assemble-boilerplate-markdown starts
/assemble-boilerplate-markdown/src/content/TOC
/assemble-boilerplate-markdown/src/content/markdown/auto-links
/assemble-boilerplate-markdown/src/content/markdown/autolink-lines
/assemble-boilerplate-markdown/src/content/markdown/backslash-escapes
/assemble-boilerplate-markdown/src/content/markdown/blockquote-list-item
/assemble-boilerplate-markdown/src/content/markdown/blockquotes-with-code-blocks
/assemble-boilerplate-markdown/src/content/markdown/case-insensitive-refs
/assemble-boilerplate-markdown/src/content/markdown/code-blocks
/assemble-boilerplate-markdown/src/content/markdown/code-spans
/assemble-boilerplate-markdown/src/content/markdown/def-blocks
/assemble-boilerplate-markdown/src/content/markdown/double-link
/assemble-boilerplate-markdown/src/content/markdown/escaped-angles
/assemble-boilerplate-markdown/src/content/markdown/gfm-break
/assemble-boilerplate-markdown/src/content/markdown/gfm-code-hr-list
/assemble-boilerplate-markdown/src/content/markdown/gfm-code
/assemble-boilerplate-markdown/src/content/markdown/gfm-del
/assemble-boilerplate-markdown/src/content/markdown/gfm-em
/assemble-boilerplate-markdown/src/content/markdown/gfm-links
/assemble-boilerplate-markdown/src/content/markdown/gfm-tables
/assemble-boilerplate-markdown/src/content/markdown/hard-wrapped-paragraphs-with-list-like-lines
/assemble-boilerplate-markdown/src/content/markdown/horizontal-rules
/assemble-boilerplate-markdown/src/content/markdown/hr-list-break
/assemble-boilerplate-markdown/src/content/markdown/inline-html-advanced
/assemble-boilerplate-markdown/src/content/markdown/inline-html-comments
/assemble-boilerplate-markdown/src/content/markdown/inline-html-simple
/assemble-boilerplate-markdown/src/content/markdown/lazy-blockquotes
/assemble-boilerplate-markdown/src/content/markdown/links-inline-style
/assemble-boilerplate-markdown/src/content/markdown/links-reference-style
/assemble-boilerplate-markdown/src/content/markdown/links-shortcut-references
/assemble-boilerplate-markdown/src/content/markdown/list-item-text
/assemble-boilerplate-markdown/src/content/markdown/literal-quotes-in-titles
/assemble-boilerplate-markdown/src/content/markdown/loose-lists
/assemble-boilerplate-markdown/src/content/markdown/main
/assemble-boilerplate-markdown/src/content/markdown/markdown-documentation-basics
/assemble-boilerplate-markdown/src/content/markdown/markdown-documentation-syntax
/assemble-boilerplate-markdown/src/content/markdown/nested-blockquotes
/assemble-boilerplate-markdown/src/content/markdown/nested-code
/assemble-boilerplate-markdown/src/content/markdown/nested-em
/assemble-boilerplate-markdown/src/content/markdown/nested-square-link
/assemble-boilerplate-markdown/src/content/markdown/not-a-link
/assemble-boilerplate-markdown/src/content/markdown/ordered-and-unordered-lists
/assemble-boilerplate-markdown/src/content/markdown/same-bullet
/assemble-boilerplate-markdown/src/content/markdown/strong-and-em-together
/assemble-boilerplate-markdown/src/content/wiki/data-context
/assemble-boilerplate-markdown/src/content/wiki/data-types
/assemble-boilerplate-markdown/src/content/wiki/data-yaml-front-matter
/assemble-boilerplate-markdown/src/content/wiki/data-yaml
/assemble-boilerplate-markdown/src/content/wiki/data
/assemble-boilerplate-markdown/src/content/wiki/options-assets
/assemble-boilerplate-markdown/src/content/wiki/options-collections
/assemble-boilerplate-markdown/src/content/wiki/options-data
/assemble-boilerplate-markdown/src/content/wiki/options-engine
/assemble-boilerplate-markdown/src/content/wiki/options-ext
/assemble-boilerplate-markdown/src/content/wiki/options-helpers
/assemble-boilerplate-markdown/src/content/wiki/options-layout
/assemble-boilerplate-markdown/src/content/wiki/options-layoutdir
/assemble-boilerplate-markdown/src/content/wiki/options-partials
/assemble-boilerplate-markdown/src/content/wiki/options
/assemble-boilerplate-markdown/src/content/wiki/templates-helpers
/assemble-boilerplate-markdown/src/content/wiki/templates-layouts
/assemble-boilerplate-markdown/src/content/wiki/templates-partials
## assemble/assemble-boilerplate-markdown ends
"""###
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let substitutionString = #"xxx"#
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