在swift中用正则表达式替换字符串[关闭]

问题描述 投票:5回答:1

我想替换匹配正则表达式模式的字符串的一部分。

我有以下正则表达式模式:

(.+?)@test\.(.+?)

这是一个字符串替换模式:

$1@hoge\.$2

如何在Swift代码中使用它们?

regex swift
1个回答
8
投票

在Swift中,您可以使用stringByReplacingMatchesInString进行基于正则表达式的替换。

这是一个显示如何使用它的代码段:

let txt = "[email protected]"
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 = "[email protected]"
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+)。

请注意,在替换字符串中,您无需转义句点。

© www.soinside.com 2019 - 2024. All rights reserved.