I want to replace a portion of a string that matches a regex pattern.
I have the following regex pattern:
(.+?)@test\.(.+?)
And this is a string replacement pattern:
$1@hoge\.$2
How can I use them inside Swift code?
In Swift, you can use stringByReplacingMatchesInString
for a regex-based replace.
Here is a snippet showing how to use it:
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 update:
let txt = "[email protected]"
let regex = "([^@\\s]+)@test\\.(\\w+)"
let repl = "$1@hoge.$2"
print( txt.replacingOccurrences(of: regex, with: repl, options: [.regularExpression]) )
Note that I changed the regex to
([^@\\s]+)
- matches 1 or more characters other than @
or whitespace@
- matches @
literallytest\\.(\\w+)
- matches test.
literally and then 1 or more alphanumeric character (\w+
).Note that in the replacement string, you do not need to escape the period.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With