Regex.Matchを渡すとき、受け取る側は何の型を指定したらいいのかわからない

実現したいこと

こっちで用意した構造体にMatchオブジェクトを渡したいけど、Regex.Matchの型が分からないです。

前提

swift 5.7で追加されたRegexをextensionで拡張してこっちで用意した構造体にMatchオブジェクトを渡したいです。将来的にはPythonのような関数などをこっちで用意した構造体に実現するつもりです。誰かが作ってないかなど、調べてみましたがRegexではなく、NSRegularExpressionしかなかったので、自分で作ろうと思いました。

発生している問題・エラーメッセージ

Cannot access associated type 'RegexOutput' from 'RegexComponent'; use a concrete type or generic parameter base instead

該当のソースコード

swift

1public struct re {2 public struct Match {3 private let _result: Regex<Any>.Match4 public let string: String5 6 public init(_ result: Regex<Any>.Match, _ string: String) {7 self._result = result 8 self.string = string 9 }10 }11}12 13extension Regex {14 func search(_ string: String, pos: Int = 0, endpos: Int? = nil) -> re.Match? {15 let start = string.index(string.startIndex, offsetBy: pos > 0 ? pos : 0)16 let end = string.index(string.startIndex, offsetBy: endpos ?? string.utf16.count)17 if let match = try? self.firstMatch(in: string[start..<end]) {18 return re.Match(match, string)19 }20 return nil21 }22}

試したこと

Regex<AnyRegexOutput>.MatchやRegex<Any>.Matchなどを試しましたが、エラーが出てしまいました。

補足情報(FW/ツールのバージョンなど)

バージョンは5.8です。

コメントを投稿

0 コメント