【发布时间】:2020-03-13 20:35:25
【问题描述】:
我在 Swift 中有一个公共/私有 RSA 密钥字符串,我想使用正则表达式从中删除 cmets。实际的键字符串包含特殊字符组合,例如 \r\n 用于回车 + 换行。这是一个例子:
let publicKey = "-----BEGIN RSA PUBLIC KEY-----\n0123456789\r\n0123456789\r\nabcdefgh\n-----END RSA PUBLIC KEY-----"
let regex = try! NSRegularExpression(pattern: "(\n)?-* ?(BEGIN|END) ((PRIVATE RSA|PUBLIC RSA)|(RSA PRIVATE|RSA PUBLIC)|(PRIVATE|PUBLIC)) KEY ?-*(\n)?", options: NSRegularExpression.Options.caseInsensitive)
let range = NSMakeRange(0, publicKey.count)
print(regex.stringByReplacingMatches(in: publicKey, options: [], range: range, withTemplate: ""))
打印出来的结果是
0123456789
0123456789
abcdefgh--
但应该是
0123456789
0123456789
abcdefgh
但是当我删除两个回车符时,结果与预期一致,没有破折号。这里出了什么问题?
【问题讨论】:
-
@Larme
\n字符串模式(所谓的正则表达式转义序列)匹配换行符,与"\n"相同,换行符匹配自身。
标签: swift regex carriage-return nsregularexpression