美文网首页
模式匹配

模式匹配

作者: fordring2008 | 来源:发表于2017-02-04 09:29 被阅读4次

模式匹配特性类似于正则表达式的匹配

// 重载 ~= ,使它接受一个 NSRegularExpression 作为模式,去匹配输入的 String

func ~=(pattern: NSRegularExpression, input: String) -> Bool {

return pattern.numberOfMatches(in: input,

options: [],

range: NSRange(location: 0, length: input.characters.count)) > 0

}

// 为了简便,再添加一个将字符串转换为 NSRegularExpression 的操作符

// 定义“前位”操作符

prefix operator ~/

// 定义操作符

prefix func ~/(pattern: String) throws -> NSRegularExpression  {

do {

return try NSRegularExpression(pattern: pattern, options: [])

}catch _ {

assertionFailure()

return NSRegularExpression()

}

}

let contact = ("http://onevcat.com", "onev@onevcat.com")

let mailRegx: NSRegularExpression

let siteRegx: NSRegularExpression

mailRegx = try ~/"^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"

siteRegx = try ~/"^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$"

switch contact {

case (siteRegx, mailRegx): print("同时拥有有效的网站和邮箱")  // 这里输出

case (_, mailRegx):print("只拥有有效的邮箱")

case (siteRegx, _):print("只拥有有效的网站")

default:print("嘛都没有")

}

相关文章

  • 模式匹配

    模式匹配之字符串 模式匹配之匹配类型 模式匹配之匹配数组、元组、集合 模式匹配之样例类 模式匹配之偏函数

  • 多模式串匹配 - AC 自动机

    多模式串匹配概念 多模式串匹配,即多个模式串在一个主串中进行匹配。 虽然单模式串也能完成多模式串的匹配,但每个模式...

  • Scala模式匹配

    模式匹配match 模式匹配不仅可以匹配值(case 1)还可以匹配类型(case s:String) 匹配过程有...

  • 正则表达式懒惰型元字符匹配 ?

    懒惰匹配模式即表示以最少的匹配量返回匹配个数,默认是非懒惰匹配模式 表达式 匹配结果:

  • scala 模式匹配的几个模式

    Scala 的模式匹配是类似与正则匹配的的模式匹配,但是不仅仅如此,它还可以匹配对象的内在的构建形式. 模式匹配就...

  • 模式匹配

    模式匹配 sql模式匹配允许使用"_"匹配任何单个字符,"%"匹配任意数目字符(包括零字符)。使用sql模式时,不...

  • Scala中的模式匹配

    简单匹配 模式匹配常用于match语句: 变量使用 模式匹配case中可以使用变量来获取参数值 类型匹配 守卫匹配...

  • web开发常识

    .gitignore规则 匹配模式前 / 代表项目的根目录 匹配模式最后加 / 代表是目录 匹配模式前加!代表取反...

  • 模式匹配

    模式 模式类型 通配符模式 _ 匹配任何值 _? 匹配非nil值 标识符模式 值绑定模式 元组模式 枚举case模...

  • Swift-模式匹配

    模式就是匹配的规则,下面介绍Swift中的模式。 1. 通配符模式 _匹配任何值,_?匹配非nil值。 2. 标识...

网友评论

      本文标题:模式匹配

      本文链接:https://www.haomeiwen.com/subject/uwsjittx.html