在swift中用正则表达式替换字符串

nao*_*ide 5 regex swift

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

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

(.+?)@test\.(.+?)
Run Code Online (Sandbox Code Playgroud)

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

$1@hoge\.$2
Run Code Online (Sandbox Code Playgroud)

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

Wik*_*żew 8

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

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

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)
Run Code Online (Sandbox Code Playgroud)

请注意,我将正则表达式更改为

  • ([^@\\s]+)- 匹配除@空格或空格之外的1个或多个字符
  • @- 按@字面意思匹配
  • test\\.(\\w+)- test.字面匹配,然后是1个或多个字母数字字符(\w+).

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