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

Swift中如何使用正则表达式从推特URL中提取TweetID

Swift 从Twitter URL提取TweetID完整实现

前置修正说明

你现有的正则逻辑是可用的,仅需要补充转义符避免Swift字符串解析错误:正则中的\d需写为\\d,或者使用##包裹的原始字符串简化转义。

完整实现代码

import Foundation

extension String {
    func getTweetID() -> String? {
        // 传入的self为Twitter URL字符串
        let nsRange = NSRange(location: 0, length: self.utf16.count)
        // 原始字符串写法无需多重转义,可读性更高
        let pattern = #"(?<=\/)\d+(?=(?:\?.*)?$)"#
        // 兼容原有写法:let pattern = "(?<=\\/)\\d+(?=(?:\\?.*)?$)"
        
        // 初始化正则实例
        guard let regex = try? NSRegularExpression(pattern: pattern) else {
            return nil
        }
        // 匹配第一个符合规则的结果
        guard let matchResult = regex.firstMatch(in: self, range: nsRange) else {
            return nil
        }
        // 将NSRange转为Swift原生Range
        guard let swiftRange = Range(matchResult.range, in: self) else {
            return nil
        }
        // 截取字符串返回
        return String(self[swiftRange])
    }
}

调用示例

let testURL = "https://twitter.com/elonmusk/status/1383233200885882885"
if let tweetID = testURL.getTweetID() {
    print(tweetID) // 输出结果:1383233200885882885
}

// 带参数的URL也可正常提取
let testURLWithParam = "https://twitter.com/elonmusk/status/1383233200885882885?s=46&t=4xt"
if let tweetID = testURLWithParam.getTweetID() {
    print(tweetID) // 同样输出:1383233200885882885
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 20:21:02