我想用正则表达式获取字符
我想得到"CDE"
var results : NSMutableArray;
var baseString = "ABCDEFG"
var regexp = NSRegularExpression(pattern: "AB.*?FG", options: nil, error: nil)
var match : NSArray = regexp.matchesInString(baseString, options: nil, range: NSMakeRange(0,countElements(baseString)));
for matches in match {
results.addObject(sampleString.substringWithRange(matches.rangeAtIndex(2)));
}
println(results);//print"CDE"
Run Code Online (Sandbox Code Playgroud)
但我得到错误.ERROR→
results.addObject(sampleString.substringWithRange(matches.rangeAtIndex(2)));
NSRange' is not convertible to 'Range<String.Index>'
Run Code Online (Sandbox Code Playgroud)
我的英语不太好.请帮助我......
正则表达式不正确,匹配将是整个字符串.而是使用:(?<= AB).*?(?= FG).
Documantation:ICU用户指南正则表达式
笔记:
(?<=AB) means preceded by AB
(?=FG) means followed by FG
Run Code Online (Sandbox Code Playgroud)
这些不捕获匹配的部分.
示例代码:
var baseString = "ABCDEFG"
var pattern = "(?<=AB).*?(?=FG)"
if let range = baseString.rangeOfString(pattern, options: .RegularExpressionSearch) {
let found = baseString.substringWithRange(range)
println("found: \(found)")
}
Run Code Online (Sandbox Code Playgroud)
输出:
发现:CDE
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |