You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Swift 5.7的Regex对象转换回字符串?

获取Swift Regex对象的原始字符串表示

在Swift标准库中,Regex类型本身并未提供直接获取原始正则表达式字符串的官方API——编译后的正则会转换为内部抽象语法树结构,不会保留初始输入的字符串。

可行的解决方案

  • 自定义包装类型(推荐)
    自己封装一个结构体,同时存储原始正则字符串和编译后的Regex实例,需要时直接读取原始字符串即可,这是最稳妥且不依赖私有API的方式:

    struct WrappedRegex {
        let pattern: String
        let regex: Regex<AnyRegexOutput>
        
        init(_ pattern: String) throws {
            self.pattern = pattern
            self.regex = try Regex(pattern)
        }
    }
    
    // 使用示例
    do {
        let wrappedRegex = try WrappedRegex("foo")
        print(wrappedRegex.pattern) // 输出 "foo"
    } catch {
        print("正则编译失败:\(error)")
    }
    
  • 不推荐:依赖反射解析私有类型
    你尝试的反射方式虽然能看到内部结构,但涉及大量私有API(如_StringProcessing.DSLTree等),这些属于Apple的实现细节,Swift版本更新后很可能失效,导致代码崩溃,因此不建议在生产环境中使用。

内容的提问来源于stack exchange,提问作者Bbrk24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:15:38