在Swift中,如何简单地“使变量”成为RegexComponent?

ippsafx7  于 2023-05-19  发布在  Swift
关注(0)|答案(1)|浏览(211)

我有这样的代码。。

func blah() {
  if let r = someString.firstMatch(of: /([abc])(\d{2})$/) {
    blah blah .. String(r.1), String(r.2)
  }
}

通常情况下,对于正则表达式,我只会将regex-guts作为变量。
因此,类似这样的东西:

let RX: RegexComponent = /([abc])(\d{2})$/

func blah() {
  if let r = someString.firstMatch(of: RX) { ..
}

我已经完全和绝对失败了,能够做到这一点,并已寻找了几个小时。
有人建议您需要any RegexComponent

let RX: any RegexComponent = /([abc])(\d{2})$/

func blah() {
  if let r = someString.firstMatch(of: RX) { ..
}

但它根本不起作用。
firstMatch#of的变元无疑是RegexComponent
我怎么才能创建/设置一个RegexComponent的变量??

nhaq1z21

nhaq1z211#

这应该可以达到目的:

let RX = /([abc])(\d{2})$/

现在,既然它可以工作,您可以Alt+单击变量名(RX),类型推断(即编译器“推断”的变量类型)应该告诉您它是Regex<Substring>
你也可以这样写:

let RX: Regex<Substring> = /([abc])(\d{2})$/

我没有完整的解释,因为我还没有玩过新的Regex,但我猜这是因为RegexComponentprotocol,所以没有真正的init,并且必须有一些“文字”:BareSlashRegexLiterals

相关问题