gpt4 book ai didi

regex - 在 Swift 3 中用捕获组替换字符串

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:06 24 4
gpt4 key购买 nike

我有以下字符串:“@[1484987415095898:274:Page Four]”,我想捕获名称,所以我写信给以下正则表达式@\[[\d]+:[\d]+:(.*)]它似乎在工作,但现在我正在努力了解如何用捕获组 one 替换以前的字符串。

“Lorem ipsum @[1484987415095898:274:Page Four] dolores”->
"Lorem ipsum 第 4 页 dolores"

请注意,我看到了如何使用 this stack question 获取捕获组但是,如何找到从中提取的原始字符串并替换它?

最佳答案

您需要用包含第一个捕获组捕获的内容的 $1 替换反向引用替换整个匹配项。

此外,我建议将 [\d] 写成 \d 以避免在您稍后决定扩展模式时对字符类联合的误解。此外,使用 .*?(惰性点匹配)来获取第一个 ] 而不是最后一个 ] 更安全(如果你使用 .* 贪婪变体)。但是,这取决于实际需求。

使用以下任一方法:

let txt = "Lorem ipsum @[1484987415095898:274:Page Four] dolores"
let regex = NSRegularExpression(pattern: "@\\[\\d+:\\d+:(.*?)\\]", options:nil, error: nil)
let newString = regex!.stringByReplacingMatchesInString(txt, options: nil, range: NSMakeRange(0, count(txt)), withTemplate: "$1")
print(newString)
// => Lorem ipsum Page Four dolores

let txt = "Lorem ipsum @[1484987415095898:274:Page Four] dolores"
let newString = txt.replacingOccurrences(of: "@\\[\\d+:\\d+:(.*?)]", with: "$1", options: .regularExpression)
print(newString)
// => Lorem ipsum Page Four dolores

关于regex - 在 Swift 3 中用捕获组替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46145418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com