Использование PERL-совместимых регулярных выражений для игнорирования строкового регистра в запросе - PullRequest
0 голосов
/ 21 февраля 2012

Я использую Parse в качестве бэкэнда для моего iOS-приложения (они добавляют свои собственные рамки в проект, добавляя методы для использования со своей базой данных). Это простая база данных, включающая столбец с именами файлов, которые я сохранил. Прямо сейчас, когда я делаю запрос, используя их метод containsString, который возвращает результаты только с соответствующими случаями для каждой буквы. Таким образом, поиск «Джон» НЕ вернет «Джон». Но у них есть возможность использовать метод matchesRegex, который позволяет вводить регулярные выражения. Я хочу знать, как я могу использовать регулярные выражения, чтобы сказать, что результат должен содержать мою входную строку, но должен игнорировать ее регистр? Поэтому, если я найду слово «Джон», оно будет соответствовать «Джону», «Джону» и т. Д.

Так это будет выглядеть примерно так:

[query whereKey:@"file_name" matchesRegex:@"something_that_returns_all_johns"];

Они используют PERL-совместимые регулярные выражения.

1 Ответ

4 голосов
/ 21 февраля 2012

В PCRE вы можете пометить только часть регулярного выражения как нечувствительную к регистру, поместив его в (?i:...) или добавив перед ним (?i). Обычно существует отдельный, внеполосный способ указать, что регулярное выражение whole нечувствительно к регистру, но если Parse API не предлагает такой способ, тогда вы можете просто применить часть - подход регулярного выражения ко всему регулярному выражению, используя любой из этих:

[query whereKey:@"file_name" matchesRegex:@"(?i:john)"];
[query whereKey:@"file_name" matchesRegex:@"(?i)john"];

(при условии, что Parse поддерживает эти функции PCRE: это возможно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...