【发布时间】:2015-09-16 10:35:57
【问题描述】:
我想替换与正则表达式模式匹配的字符串的一部分。
我有以下正则表达式模式:
(.+?)@test\.(.+?)
这是一个字符串替换模式:
$1@hoge\.$2
如何在 Swift 代码中使用它们?
【问题讨论】:
我想替换与正则表达式模式匹配的字符串的一部分。
我有以下正则表达式模式:
(.+?)@test\.(.+?)
这是一个字符串替换模式:
$1@hoge\.$2
如何在 Swift 代码中使用它们?
【问题讨论】:
在 Swift 中,您可以使用 stringByReplacingMatchesInString 进行基于正则表达式的替换。
这是一个显示如何使用它的 sn-p:
let txt = "myname@test.com"
let regex = NSRegularExpression(pattern: "([^@\\s]+)@test\\.(\\w+)", options:nil, error: nil)
let newString = regex!.stringByReplacingMatchesInString(txt, options: nil, range: NSMakeRange(0, count(txt)), withTemplate: "$1@hoge.$2")
println(newString)
Swift 4.2 更新:
let txt = "myname@test.com"
let regex = "([^@\\s]+)@test\\.(\\w+)"
let repl = "$1@hoge.$2"
print( txt.replacingOccurrences(of: regex, with: repl, options: [.regularExpression]) )
请注意,我将正则表达式更改为
([^@\\s]+) - 匹配除 @ 或空格之外的 1 个或多个字符@ - 匹配 @ 字面意思test\\.(\\w+) - 匹配 test. 字面,然后匹配 1 个或多个字母数字字符 (\w+)。请注意,在替换字符串中,您不需要转义句点。
【讨论】: