【发布时间】:2016-08-01 01:23:43
【问题描述】:
在一个文本字符串中,我试图获取之间的所有内容
[DATA FORMAT] 和 /DATA FORMAT]
和
Columns Format: 和 /DATA FORMAT]
为了这个目标,我使用正则表达式。
虽然模式
"\\[DATA FORMAT\\](.*?)\\[/DATA FORMAT\\]"
按预期工作,模式
"Columns Format(*.?)\\[/DATA FORMAT\\]"
报错
Optional("The value “Columns Format(*.?)\\[/DATA FORMAT\\]” is invalid.")
The value “Columns Format(*.?)\[/DATA FORMAT\]” is invalid.
在控制台打印(第一行:localizedFailureReason,第二行:localizedDescription)
我错过了什么?
代码:
extension String
{
func match (pattern: String,
options: RegularExpression.Options = [.caseInsensitive, .dotMatchesLineSeparators]) -> [String]
{
do
{
let regex = try RegularExpression(pattern: pattern, options: options)
let regexAnsw = regex.matches(in: self, options: RegularExpression.MatchingOptions.withTransparentBounds, range: NSMakeRange(0, self.characters.count))
var retStrings = [String]()
for rs in regexAnsw
{
if let range = self.range(from: rs.range)
{
retStrings.append(self.substring(with: range))
}
else
{
print("match: cant' convert NSRange to range")
}
}
return retStrings
}
catch let error as NSError
{
print(error.localizedFailureReason)
print(error.localizedDescription)
return [String]()
}
}
}
【问题讨论】: