在文本字符串中,我试图获取之间的所有内容
[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]()
}
}
}
您已将您的*
和.
交换到第二个正则表达式中(在“列格式”之后的捕获组中)。这使得正则表达式无效;那个*
没有指任何东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句