Popularity
3.8
Growing
Activity
3.4
-
236
7
8

Programming language: Swift
License: MIT License
Tags: Text    

Regex by sindresorhus alternatives and similar libraries

Based on the "Text" category.
Alternatively, view Regex alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Regex by sindresorhus or a related project?

Add another 'Text' Library

README

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