Rexy

CI Status Mac OS X Linux Swift License

Rexy 是 POSIX 正则表达式的纯 Swift 实现。

特性

用法

模式匹配

当您想要检查给定字符串是否匹配正则表达式时

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

匹配

当您想要在输入字符串中搜索正则表达式的所有出现项并获取匹配项时

import Rexy

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

当您只对第一次出现感兴趣时

import Rexy

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

捕获组

当您想要匹配和捕获组时

import Rexy

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

替换

当您想要将所有匹配正则表达式模式的字符串替换为指定的替换字符串时

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

安装

Rexy 可通过 Swift Package Manager 获得。要安装它,只需将以下行添加到您的 Package.swift

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

或者,您可以通过添加 Swift 包依赖项将其安装到您的 Xcode 项目中。

作者

Vadym Markov, markov.vadym@gmail.com

鸣谢

灵感鸣谢归于 POSIXRegex,作者是 Zewo

贡献

查看 CONTRIBUTING 文件以获取更多信息。

许可证

Rexy 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。