Swift: проверка префикса с помощью регулярных выражений - PullRequest
1 голос
/ 13 марта 2019

Я пытаюсь проверить, начинается ли строка с текста, который следует шаблону регулярного выражения. Есть ли способ сделать это, используя string.hasPrefix()?

Моя реализация пока:

let pattern = "[Ff][Yy][Ii](.)?"
let regex = try? NSRegularExpression(pattern: pattern, options: [])

if firstRowText.hasPrefix(regex) { //Cannot convert value of type NSRegularExpression to String

}

1 Ответ

4 голосов
/ 13 марта 2019

Вы должны использовать регулярное выражение, используя range(of:options:range:locale:), передавая параметр .regularExpression с параметром .anchored:

if firstRowText.range(of: "[Ff][Yy][Ii]", options: [.regularExpression, .anchored]) != nil {...}

Параметр .anchoredзаставляет механизм регулярных выражений искать совпадения только в начале строки.

Чтобы сделать регулярное выражение совпадением без учета регистра, вы можете передать другой вариант наряду с текущими, .caseInsensitive и используйте более короткое регулярное выражение, например "FYI":

if firstRowText.range(of: "FYI", options: [.regularExpression, .anchored, .caseInsensitive]) != nil {

См. Swift online demo .

Обратите внимание, что вы также можете использовать встроенный модификаторопция (?i) для установки нечувствительности к регистру:

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