Swift命令行工具-在长字符串中替换正则表达式非常慢

时间:2019-01-10 09:28:00

标签: swift regex string

我正在使用Xcodeswift中编写一个小型命令行工具。我有一个大约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也不能在大字符串上执行)?我不知道如何简化它。有没有更好的方法可以做我想做的事?

谢谢您的帮助

0 个答案:

没有答案