swift项目第九天:正则表达式的学习
import UIKit /*
练习1:匹配abc 练习2:包含一个a~z,后面必须是0~9 -->[a-z][0-9]或者[a-z]\d
* [a-z] : a~z
* [0-9]/\d : 0~9:[0-9]/\d :表示[0-9]或\d,\d表示数字的意思 练习3:必须第一个是字母,第二个是数字 -->^[a-z][0-9]$
* ^[a-z] : 表示首字母必须是a~z
* \d{2,10} : 数字有2到10
* [a-z]$ : 表示必须以a-z的字母结尾 练习4:必须第一个是字母,字母后面跟上4~9个数字 练习5:不能是数字0-9 * [^0-9] : 不能是0~9 练习6:QQ匹配:^[1-9]\d{4,11}$
都是数字
5~12位
并且第一位不能是0 练习7:手机号码匹配^1[3578]\d{9}$
1.以13/15/17/18
2.长度是11
*/ class ViewController: UIViewController { override func viewDidLoad() {
super.viewDidLoad() let str = "" // 1.创建正则表达式规则
let pattern = "^1[3578]\\d{9}$"// \\d{9},其中\\表示转义, \\d{9}表示,后面有9位数字 // 2.创建正则表达式对象(抛出异常throw用:try try? try!)
guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
return
} // 3.匹配字符串中内容:swift中的字符串的长度用:str.characters.count
let results = regex.matches(in: str, options: [], range: NSRange(location: , length: str.characters.count)) // 4.遍历数组,获取结果:字符串的截取操作一般都是将swift的字符串转为oc的字符串来处理
for result in results {
print((str as NSString).substring(with: result.range))
print(result.range)
}
} }
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let statusText = "@coderwhy:【动物尖叫合辑】#肥猪流#猫头鹰这么尖叫[偷笑]、@M了个J: 老鼠这么尖叫、兔子这么尖叫[吃惊]、@花满楼: 莫名奇#小笼包#妙的笑到最后[好爱哦]!~ http://t.cn/zYBuKZ8/"
/*
1: 匹配出来@coderwhy:let pattern = "@.*?:" ,其中 .* 用来表示表示任意字符,加上 ?来表示,只要遇到:就立即停止匹配,没有?的话,它会一直匹配到最后一个:
2: 匹配表情: let pattern = "\\[.*?\\]" ,因为[],有特殊的含义,所以要进行转义,转义就用\转义,\在siwft字符串中也有特殊含义,所以就再用\来表示,转义就用\,如果转义后,还有特殊含义,就再用\来表示
**/
// 1.创建匹配规则
// let pattern = "@.*?:" // 匹配出来@coderwhy:
// let pattern = "#.*?#" // 匹配话题
// let pattern = "\\[.*?\\]" // 匹配表情
let pattern = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?" // URL网址
// 2.创建正则表达式对象
guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
return
}
// 3.开始匹配
let results = regex.matchesInString(statusText, options: [], range: NSRange(location: , length: statusText.characters.count))
// 4.获取结果
for result in results {
print((statusText as NSString).substringWithRange(result.range))
}
}
}
swift项目第九天:正则表达式的学习的更多相关文章
- 25.怎样创建一个Swift项目?
经历前面三部分的学习之后,我们对于Swift的有了基本的了解,知道它的基础语法,也知道了类.结构体.枚举.协议.扩展等等内容.但知道上面这些内容,并不代表我们就能很好的进行实际的项目开发了,本部分内容 ...
- Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课
Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...
- 自学 iOS - 三十天三十个 Swift 项目 第一天
最近公司项目不是很忙,偶然间看到编程语言排行榜,看到swift 已经排到前10了,然OC排名也越来越后了,感觉要上车了,虽然现在项目都是用OC写的,但是swift是一种趋势.在网上看到"自学 ...
- 在 Swift 项目中实现侧滑菜单-利用 SWRevealViewController
你可以完全自己手动写一个侧滑菜单,但是现在在 GitHub 上面已经有很多免费的开源库了,如果不是有很特别的需求,大可不必新建一个轮子. 在这里我使用的这个第三方库名字叫做 SWRevealViewC ...
- 在Swift项目中使用cocoaPods导入第三方OC库
首先保证你的项目是基于cocoaPods的,并且是通过XX.xcworkspace打开的.cocoaPods安装教程(Xcode6以上) 下面就第三方库MBProgressHUD来讲解如何在Swift ...
- swift项目中使用OC/C的方法
假如有个OC类OCViewController : UIViewController类里有两个方法 //swift调用oc或c的混编是比较常用的,反过来的调用很少.这里只写了swift调用oc和c的方 ...
- 自学 iOS – 三十天三十个 Swift 项目
自学 iOS – 三十天三十个 Swift 项目 github源码地址:https://github.com/allenwong/30DaysofSwift
- Swift项目兼容Objective-C问题汇总
Swift项目兼容Objective-C问题汇总 转载自 http://www.cocoachina.com/swift/20150608/12025.html 本文是投稿文章,作者:一叶(博客)欢迎 ...
- Swift 项目中常用的第三方框架
Swift 项目中可能用到的第三方框架 字数1004 阅读4091 评论17 喜欢93 这里记录下swift开发中可能用的框架 , 最近浏览了不少,积累在这里,以后用的时候方便查阅.顺便推荐给大家! ...
随机推荐
- vue 打包成 apk 文件(修改路径)
第一个坑:文件引用路径 现在项目我们什么都没动,是初始化之后直接打包的状态,打开dist/index.htmnl文件整个网页都是一片空白的. 爬坑: 打开 config文件夹/index.js文件 a ...
- CSS盒子模型图
下面这张图,是W3C标准的CSS盒子模型: 由上图可以清楚的看出各个部分的CSS属性.
- 项目: 更新(二) python 实现大概FTP的功能
服务器利用 socketserver 模块 构造, 实现了 多进程. 客户端仍然利用的是底层的 socket模块. 只不过进行了更深度的 解耦, 新加或者删除 某些功能 更方便 在上一个版本的基础上, ...
- POJ 2039 Floyd
句意理解题 解释输入好啦: 第一行n个数 m场电影 随后m行 每行的第一个数 代表 有k奶牛在这个电影中出现过 随后k个数 是奶牛的编号 如果两头奶牛在同一个电影中出现过 相互度为1 奶牛们的相互度可 ...
- 【Codeforces Round #427 (Div. 2) C】Star sky
[Link]:http://codeforces.com/contest/835/problem/C [Description] 给你n个星星的坐标(xi,yi); 第i个星星在第t秒,闪烁值变为(s ...
- 洛谷——P1209 [USACO1.3]修理牛棚 Barn Repair
https://www.luogu.org/problem/show?pid=1209 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假 ...
- worktools-git 工具的使用总结(知识点累积)
1.用简单列表的方式查看提交记录git log --pretty=online zhangshuli@zhangshuli-MS-:~/myGit$ git log --pretty=oneline ...
- Funui-Theme 资源的替换
实现资源的替换,需要分为以下几个步骤 1.找到需要更改的模块 mediatek/packages/apps/FileManager 2.到主题模块下根据包名找到相应资源(以Grass为例) cd ve ...
- 快速排序的期望复杂度O(nlogn)证明。
快速排序的最优时间复杂度是 \(O(nlogn)\),最差时间复杂度是 \(O(n^2)\),期望时间复杂度是 \(O(nlogn)\). 这里我们证明一下快排的期望时间复杂度. 设 \(T(n)\) ...
- Jodd-vtor验证框架
VTor是一个编程式验证框架,适用于任意java对象的验证.它是一个快速.微型的.专注于验证的框架.也可以通过注解或者手动设置验证条件.验证条件也可以在profile中分组.VTor是可扩展的,用户很 ...