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

如何使用Swift 5.7+正则字面量在字符串中查找范围

Swift 5.7+ 使用Regex字面量匹配字符串范围的方法

你想要的写法在Swift 5.7+里是完全可行的,直接用Regex字面量调用range(of:)即可,无需额外处理转义,代码如下:

let range = myString.range(of: /\s*\d+/)

完整使用示例

let myString = "test 456 example"
// 匹配任意空白符开头的数字序列
if let matchRange = myString.range(of: /\s*\d+/) {
    let matchedSubstring = myString[matchRange]
    print("匹配到的内容:\(matchedSubstring)") // 输出 " 456"
} else {
    print("未找到匹配")
}

核心优势

  • 无需转义反斜杠:直接写\s、\d这类正则元字符,不用像旧版那样写\\s、\\d,代码可读性大幅提升
  • 编译时验证:正则语法错误会在编译阶段直接报错,避免运行时才发现问题
  • 性能更优:正则表达式在编译阶段就完成处理,省去了旧版运行时编译的开销

自定义匹配选项

如果需要特殊匹配规则(比如忽略大小写、多行模式),可以在Regex字面量末尾添加修饰符:

// 忽略大小写匹配字母
let caseInsensitiveRange = myString.range(of: /[a-z]+/i)
// 多行模式,匹配每行开头的数字
let multiLineRange = myString.range(of: /^\d+/m)

这个方法完全基于Swift标准库的新Regex API,没有使用旧版NSRegularExpression相关逻辑,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:01:02