2014-11-08 1 views
2

Как говорится в заголовке, мне интересно, поддерживает ли NSRegularExpression как Objective-c, так и Swift, поддерживает поиск с независимым регистром без регистра?Поддерживает ли NSRegularExpression частичный регистр без учета регистра?

А именно, будет признан шаблон (? Ismx)? Если нет, есть ли краткий аргумент в пользу этой неспособности?

Я по-настоящему ценю ваше объяснение.

ответ

5

От NSRegularExpression Class Reference:

Таблица 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)) 
} 

Выход:

 
foo 
Foo 

Шаблон соответствует "Foo" и "Foo", потому что "F" подобран к регистру. Он не соответствует «fOO», потому что «oo» соответствует чувствительности к регистру.

+0

Это захват или нет? – zaph

+0

@ Zaph: Это не так (насколько я вижу) представляет новую группу захвата. Это то, что вы имели ввиду? –

+0

Да, это вопрос. Благодарю. – zaph