Swiftpack.co - vadymmarkov/Rexy as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by vadymmarkov.
vadymmarkov/Rexy 1.0.1
:dragon_face: POSIX Regular Expressions in Swift
⭐️ 16
🕓 4 years ago
.package(url: "https://github.com/vadymmarkov/Rexy.git", from: "1.0.1")

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

Alternatively, you can install it in your Xcode project by adding a Swift package dependency.

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.

GitHub

link
Stars: 16
Last commit: 4 years ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

1.0.1
4 years ago

Update to Swift 5.1 #15

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics