Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Regex {
- let pattern: String
- let options: NSRegularExpressionOptions!
- private var matcher: NSRegularExpression {
- return NSRegularExpression(pattern: self.pattern, options: nil, error: nil)
- }
- required init(pattern: String, options: NSRegularExpressionOptions = nil) {
- self.pattern = pattern
- self.options = options
- }
- func match(string: String, options: NSMatchingOptions = nil) -> Bool {
- return self.matcher.numberOfMatchesInString(string, options: options, range: NSMakeRange(0, string.utf16Count)) != 0
- }
- }
- extension Regex: StringLiteralConvertible, ExtendedGraphemeClusterLiteralConvertible {
- typealias ExtendedGraphemeClusterLiteralType = StringLiteralType
- class func convertFromExtendedGraphemeClusterLiteral(value: ExtendedGraphemeClusterLiteralType) -> Self {
- return self(pattern: value)
- }
- class func convertFromStringLiteral(value: StringLiteralType) -> Self {
- return self(pattern: value)
- }
- }
- // MARK: -
- protocol RegularExpressionMatchable {
- func match(regex: Regex) -> Bool
- }
- infix operator =~ { associativity left precedence 130 }
- func =~<T: RegularExpressionMatchable> (left: T, right: Regex) -> Bool {
- return left.match(right)
- }
- extension String: RegularExpressionMatchable {
- func match(regex: Regex) -> Bool {
- return regex.match(self)
- }
- }
- "foo" =~ "f" // true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement