NSRegularExpression возвращает только одно совпадение - PullRequest
0 голосов
/ 22 февраля 2019

Я написал регулярное выражение для сопоставления адресов ячеек, как в электронной таблице, и попытался сопоставить входные строки, используя совпадения NSRegularExpression (в строке :, опции :, диапазон:) метод.

let input = "A:IV"
let regexStr = "(\\$?(([a-h]?[a-z])|i[a-v])([ \\t]*)(:([ \\t]*)\\$?(([a-h]?[a-z])|i[a-v])([ \\t]*))*(:([ \\t]*)\\$?(([a-h]?[a-z])|i[a-v])))"
let colRegex = try! NSRegularExpression.init(pattern: regexStr, options: .caseInsensitive)
let matches = colRegex.matches(in: input, options: [], range: NSRange(location: 0, length: input.utf16.count))
for match in matches {
 print("Match >>>>", match)
}

Этот код печатает только одно совпадение A: I и не соответствует A: IV .Когда я изменяю регулярное выражение следующим образом:

(\\ $? (I [av] | ([ah]? [Az])) ([\\ t] *) (: ([\\ t] *) \\ $? (i [av] | ([ах]? [аз])) ([\\ t] *)) * (: ([\\ t] *) \\ $?(i [av] | ([ah]? [az]))))

Код печатает одно совпадение A: IV , а не A: I.Хотя моей целью является сопоставление всей входной строки, я не понимаю, почему не существует более одного совпадения для любой заданной входной строки.Кажется, нет ни одного варианта, который отрицает это поведение.

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