gpt4 book ai didi

regex - 为什么正则表达式不起作用? swift

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

我有这个适用于 http://www.regexr.com 的正则表达式但不在 iOS 中。有人知道怎么回事吗?

let regex = NSRegularExpression(pattern: "v=(.+?)(?=\\s|&)", options: NSRegularExpressionOptions.CaseInsensitive, error: &error)

原始正则表达式:v=(.+?)(?=\s|&)

正则表达式应用于此测试 URL(分隔):

https://www.youtube.com/watch?v=sjifp5oi6dE
https://www.youtube.com/watch?v=gdigMMGadDM&feature=relmfu
https://www.youtube.com/watch?v=gdigMMGadDM&feature=relmfu&asdsadsa
https://www.youtube.com/watch?v=gdigMMGadDM&feature=relmfu&asdsadsa&asdfasdasdasQ%4&asdsadsad
https://www.youtube.com/watch?feature=relmfu&asdsadsa&asdfasdasdasQ%4&asdsadsad&v=gdigMMGadDM

谢谢!

编辑 1:

代码如下:

// Get video ID
var error: NSError?
let regex = NSRegularExpression(pattern: "v=(.+?)(?=\\s|&)", options: NSRegularExpressionOptions.CaseInsensitive, error: &error)
println(originalURL)
println(regex)
let match: NSTextCheckingResult? = regex.firstMatchInString(originalURL, options: NSMatchingOptions(0), range: NSMakeRange(0, countElements(originalURL)))
println(match)
let videoID = (originalURL as NSString).substringWithRange(match!.range).stringByReplacingOccurrencesOfString("v=", withString: "")
println(videoID)

“匹配”为零!

编辑 2:

预期结果:regexr.com/39loc

最佳答案

您的模式在字符串的末尾 找不到“v=...”,因为(?=\\s|&) 期望后面的空格或“&”字符。使用 "v=(.+?)(?=$|&)" 您应该会得到预期的结果。

关于regex - 为什么正则表达式不起作用? swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26264731/

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