Я пишу небольшой инструмент командной строки в 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
действительно действительно мало, в противном случае это займет слишком много времени (я выйду из программы через минуту).
Почему это так невероятно медленно? Является ли выражение регулярного выражения слишком сложным (regex101.com также не может сделать это для большой строки)? Я не знаю, как это упростить. Есть ли лучший способ сделать то, что я пытаюсь сделать?
Спасибо за любую помощь