NSRegularExpression是否支持部分不区分大小写?

don*_*key 4 regex xcode objective-c nsregularexpression swift

正如标题所述,我想知道在Objective-c或Swift中是否支持部分不区分大小写的NSRegularExpression?

即,模式是否会识别(?ismx)?如果没有,是否有这种无能的简短原因?

我非常感谢你的解释.

Mar*_*n R 7

来自NSRegularExpression类参考:

表2正则表达式运算符

...

(?ismwx-ismwx:...)
标志设置.使用指定的标志启用或-disabled评估带括号的表达式....

(?ismwx-ismwx)
标志设置.更改标志设置.更改适用于设置后的模式部分.例如,(?i)更改为不区分大小写的匹配....

例:

let pattern = "(?i)f(?-i)oo"
//Or: let pattern = "(?i:f)oo"
let regex = NSRegularExpression(pattern: pattern, options: nil, error: nil)!

let string : NSString = "foo, Foo, fOO"
regex.enumerateMatchesInString(string, options: nil, range: NSMakeRange(0, string.length)) {
    (result, flags, stop) -> Void in
    println(string.substringWithRange(result.range))
}
Run Code Online (Sandbox Code Playgroud)

输出:

foo
Foo

该模式匹配"foo"和"Foo",因为"f"匹配不区分大小写.它与"fOO"不匹配,因为"oo"符合区分大小写.

  • @Zaph:我测试了它:在上面的示例代码中用`result.rangeAtIndex(1)`替换`result.range`会抛出一个"超出范围"的异常,这意味着模式中没有捕获组. (2认同)