Logo

0x5a.live

for different kinds of informations and explorations.

GitHub - sindresorhus/Regex: 🔤 Swifty regular expressions

🔤 Swifty regular expressions. Contribute to sindresorhus/Regex development by creating an account on GitHub.

Visit SiteGitHub - sindresorhus/Regex: 🔤 Swifty regular expressions

GitHub - sindresorhus/Regex: 🔤 Swifty regular expressions

🔤 Swifty regular expressions. Contribute to sindresorhus/Regex development by creating an account on GitHub.

Powered by 0x5a.live 💗

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")

Or add the package in Xcode.

Usage

First, import the package:

import Regex

Supported regex syntax.

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+(?<word>[a-z]+)\d+"#)

regex.firstMatch(in: "123unicorn456")?.group(named: "word")?.value
//=> "unicorn"

Pattern matching:

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

See the API docs.

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

Swift Resources

are all listed below.

Resources

listed to get explored on!!

Made with ❤️

to provide different kinds of informations and resources.