NSRegularExpression仅返回单个匹配项

时间:2019-02-22 07:08:45

标签: ios swift regex nsregularexpression

我已经编写了一个正则表达式来匹配单元格地址,就像在电子表格中一样,并尝试使用NSRegularExpression的 matches(in string :, options :, range:)方法来匹配输入字符串。

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 ] |([ah]?[az]))([\\ t] *))*(:([(\\ t] *)\\ $?(i [av] |([ah]?[az] ))))

该代码打印单个匹配项 A:IV ,而不打印 A:I 。尽管匹配整个输入字符串是我的目标,但我不明白为什么对于任何给定的输入字符串都只包含一个匹配项。似乎也没有选择可以抵消这种行为。

0 个答案:

没有答案