Regex
Swifty regular expressions
This is a wrapper for NSRegularExpression
that makes it more convenient and type-safe to use regular expressions in Swift.
Install
Add the following to Package.swift
:
.package(url: "https://github.com/sindresorhus/Regex", from: "0.1.0")
Usage
First, import the package:
import Regex
Examples
Check if it matches:
Regex(#"\d+"#).isMatched(by: "123")
//=> true
Get first match:
Regex(#"\d+"#).firstMatch(in: "123-456")?.value
//=> "123"
Get all matches:
Regex(#"\d+"#).allMatches(in: "123-456").map(\.value)
//=> ["123", "456"]
Replacing first match:
"123π¦456".replacingFirstMatch(of: #"\d+"#, with: "")
//=> "π¦456"
Replacing all matches:
"123π¦456".replacingAllMatches(of: #"\d+"#, with: "")
//=> "π¦"
Named capture groups:
let regex = Regex(#"\d+(?[a-z]+)\d+"# )
regex.firstMatch(in: "123unicorn456")?.group(named: "word")?.value
//=> "unicorn"
switch "foo123" {
case Regex(#"^foo\d+$"#):
print("Match!")
default:
break
}
switch Regex(#"^foo\d+$"#) {
case "foo123":
print("Match!")
default:
break
}
Multiline and comments:
let regex = Regex(
#"""
^
[a-z]+ # Match the word
\d+ # Match the number
$
"""#,
options: .allowCommentsAndWhitespace
)
regex.isMatched(by: "foo123")
//=> true
API
FAQ
#
?
Why are pattern strings wrapped in Those are raw strings and they make it possible to, for example, use \d
without having to escape the backslash.
Related
- Defaults - Swifty and modern UserDefaults
- KeyboardShortcuts - Add user-customizable global keyboard shortcuts to your macOS app
- LaunchAtLogin - Add βLaunch at Loginβ functionality to your macOS app
- Moreβ¦