【发布时间】:2014-12-03 13:48:56
【问题描述】:
我有这个适用于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
【问题讨论】:
-
不起作用是什么意思?
-
很简单,没有找到匹配项!我尝试了 NSRegularExpressionOptions 的所有选项,但没有
-
我认为他的意思是你试图从这些 URL 中提取什么模式。
-
@PiJoules 不,我并不真正关心模式,因为这无关紧要。澄清一下,正则表达式是如何使用的,结果是什么?
-
预期结果示例:regexr.com/39loc
标签: regex url swift nsregularexpression