Arrays 使用正则表达式拆分以特定字符开头和结尾的组

Arrays 使用正则表达式拆分以特定字符开头和结尾的组,arrays,regex,swift,string,Arrays,Regex,Swift,String,我有一根这样的绳子 var string = "A12345678B119292A88B2222A883849B123" -->变量字符串=A12345678B119292A88B2222A883849B123 。。。将字符串拆分为以“A”开头、以“B”结尾的特定组,得到如下结果: 这是我到目前为止发现的: func matches(for regex: String, in text: String) -> [String] { do { let rege

我有一根这样的绳子

var string = "A12345678B119292A88B2222A883849B123"
-->变量字符串=A12345678B119292A88B2222A883849B123

。。。将字符串拆分为以“A”开头、以“B”结尾的特定组,得到如下结果:

这是我到目前为止发现的:

func matches(for regex: String, in text: String) -> [String] {

    do {
        let regex = try NSRegularExpression(pattern: regex)
        let results = regex.matches(in: text,
                                    range: NSRange(text.startIndex..., in: text))
        return results.map {
            String(text[Range($0.range, in: text)!])
        }
    } catch let error {
        print("invalid regex: \(error.localizedDescription)")
        return []
    }
}

let string = "A12345678B119292A88B2222A883849B123"
let pattern = "\\.*A.*B" // pattern error

let array = matches(for: pattern, in: string)
print(array)

[?]如何使用regex和Swift实现此结果?

除非您有其他示例,否则您可以使用

(?<=A)\d+(?=B)
看。
请注意,您需要加倍转义反斜杠,以便您需要编写?您可以通过正向的lookback/lookahead实现这一点 比较:

模式匹配任意字符序列, 前面是A,后面是B

还要注意用法 非贪婪模式的.*?,否则您将
第一个a和最后一个B之间的单个匹配。

let pattern=[AB]\d+将导致错误。literal中的无效转义序列这将匹配以a或B开头的任何数字序列。OP只希望匹配以a开头和以B结尾的数字。因此结果将是[12345678、119292、882222、883849、123]而这不是什么asked@LeoDabus你是绝对正确的,已经更新了答案。此外,请考虑在左侧接受/支持绿色蜱的回答。如果它对你有帮助。问题是含糊地措辞,无可否认。我只是从resultArray推断出需要数字,但我可能在这里错了。
(?<=A)\d+(?=B)
let string = "A12345678B119292A88B2222A883849B123"
let pattern = "(?<=A).*?(?=B)"

let array = matches(for: pattern, in: string)
print(array)
// ["12345678", "88", "883849"]