我正在使用Xcode
在swift
中编写一个小型命令行工具。我有一个大约80行长的字符串,其中包含这样的内容(可能多次):
#if true
This should be here
#else
This should not be here
#endif
我想用This should be here
或在#if true
和#else
之间写的任何内容替换所有出现的情况。
(我在#if false
上也这样做)
我正在这样做:
let contents = try String(contentsOf: myFileURL)
contents = contents.replacingOccurrences(of: "#if true\n((.*|\n)*)#else\n(?:(.*|\n)*)#endif", with: "$1", options: .regularExpression)
从技术上讲,这是可行的,但前提是contents
确实很小,否则会花费很长时间(我在一分钟后退出程序)。
为什么这是如此缓慢? regex表达式是否太复杂(regex101.com也不能在大字符串上执行)?我不知道如何简化它。有没有更好的方法可以做我想做的事?
谢谢您的帮助