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

如何在Swift正则表达式字面量中指定匹配选项?

Swift正则字面量添加搜索标记的正确写法

你遇到的错误是因为Swift的正则字面量语法不支持直接在斜杠后写mi这种缩写标记——编译器会把mi当成一个不存在的变量,所以报「Cannot find 'mi' in scope」。

正确添加标记有两种方式:

方式一:内联标记写法

把标记放在正则开头的(?...)中,这是正则标准的内联标记语法,Swift完全支持:

let regex = /(?mi)^foo/

这里(?mi)表示同时启用不区分大小写(i)和多行模式(m),^会匹配每行的开头而非整个字符串的开头。

方式二:通过Regex初始化器传入选项

如果你觉得内联标记不够直观,可以用Regex的初始化器,明确指定选项参数:

let regex = Regex(/^foo/, options: [.caseInsensitive, .anchorsMatchLines])

其中:

  • .caseInsensitive对应i标记
  • .anchorsMatchLines对应m标记

另外给你列几个常用标记和Swift选项的对应关系:

  • i → .caseInsensitive(不区分大小写)
  • m → .anchorsMatchLines(多行模式)
  • s → .dotMatchesNewlines(让.匹配换行符)
  • x → .allowCommentsAndWhitespace(忽略正则里的空格和注释)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:05:17