Skip to content

SportlabsTechnology/Rexy

 
 

Repository files navigation

Rexy

CI Status Mac OS X Linux Swift License

Rexy is a pure Swift implementation of POSIX Regular Expressions.

Features

  • Pattern matching
  • Capturing groups
  • Replace method
  • Matching operators
  • Representation of a regular expression error
  • Option sets with default constants for compilation flags (cflag) and regex matching flags (eflag)
  • Unit test coverage
  • No dependencies

Usage

Pattern matching

When you want to check if a given string matches regular expression:

import Rexy

// Regular way
do {
  let regex = try Regex("Tyrannosaurus")
  regex.isMatch("Tyrannosaurus") // => true
  regex.isMatch("Spinosaurus") // => false
} catch {
  print(error)
}

// With custom operators
"Tyrannosaurus" =~ "T.*" // true
"Spinosaurus" =~ "T.*" // false
"Spinosaurus" !~ "T.*" // true

Matches

When you want to search an input string for all occurrences of a regular expression and get the matches:

import Rexy

do {
  let regex = try Regex("[a-z]+")
  regex.matches("a1b1") // ["a", "b"])
} catch {
  print(error)
}

When you're interested only in the first occurrence:

import Rexy

do {
  let regex = try Regex("[a-z]+")
  regex.matches("a1b1") // "a"
} catch {
  print(error)
}

Capturing Groups

When you want to match and capture groups:

import Rexy

do {
  let regex = try Regex("(Tyrannosaurus) (Rex)")
  regex.groups("Tyrannosaurus Rex") // => ["Tyrannosaurus", "Rex"]
  regex.groups("Spinosaurus") // => []
} catch {
  print(error)
}

Replace

When you want to replace all strings that match a regular expression pattern with a specified replacement string:

import Rexy

do {
  let regex = try! Regex("Tyrannosaurus")
  regex.replace("Tyrannosaurus Rex Tyrannosaurus", with: "Dinosaur") // => "Dinosaur Rex Dinosaur"
  regex.replace("Spinosaurus", with: "Dinosaur") // => Spinosaurus
} catch {
  print(error)
}

Installation

Rexy is available through Swift Package Manager. To install it, simply add the following lines to your Package.swift:

.Package(url: "https://github.com/vadymmarkov/Rexy.git", versions: Version(0,1,0)..<Version(1,0,0))

Author

Vadym Markov, [email protected]

Credits

Credits for inspiration go to POSIXRegex by Zewo

Contributing

Check the CONTRIBUTING file for more info.

License

Rexy is available under the MIT license. See the LICENSE file for more info.

About

🐲 POSIX Regular Expressions in Swift 3.0

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 95.4%
  • Shell 4.6%