SwiftVerbalExpressions is a Swift library that helps to construct difficult regular expressions - ported from the awesome JavaScript VerbalExpressions.
Here's a couple of simple examples to give an idea of how VerbalExpressions works:
// Create an example of how to test for correctly formed URLs
let tester = VerEx()
.startOfLine()
.then("http")
.maybe("s")
.then("://")
.maybe("www")
.anythingBut(" ")
.endOfLine()
// Create an example URL
let testMe = "https://www.google.com"
// Use test() method
if tester.test(testMe) {
print("We have a correct URL") // This output will fire
}
else {
print("The URL is incorrect")
}
// Use =~ operator
if testMe =~ tester {
print("We have a correct URL") // This output will fire
}
else {
print("The URL is incorrect")
}
prin(tester) // Outputs the actual expression used: "^(?:http)(?:s)?(?::\/\/)(?:www)?(?:[^ ]*)$"
let replaceMe = "Replace bird with a duck"
// Create an expression that seeks for word "bird"
let verEx = VerEx().find("bird")
// Execute the expression like a normal RegExp object
let result = verEx.replace(replaceMe, with: "duck")
print(result) // Outputs "Replace duck with a duck"
let result2 = VerEx().find("red").replace("We have a red house", with: "blue")
print(result2) // Outputs "We have a blue house"
You can find the documentation for the original JavaScript repo on their wiki.
Clone the repo and fork! Pull requests are warmly welcome!
Thank you to @jehna for coming up with the awesome original idea!
Thank you to @kishikawakatsumi for ObjectiveCVerbalExpressions from which I borrowed some code!
You can view all implementations on VerbalExpressions.github.io
This version is under testing, but it supports Swift Package Manager. Therefore it can be included in the project with:
.package(
url: "https://github.com/VerbalExpressions/SwiftVerbalExpressions.git",
from: "
And:
.target(
name: "YourProject",
dependencies: ["VerbalExpressions"]),