深入浅出理解iOS经常使用的正則表達式—基础篇[Foundation]
參考资料:cocoachina的zys475481075的文章
几个单词
Regular ['regjʊlə]adj.
定期的;有规律的
Expression[ɪk'spreʃ(ə)n;
ek-] n.
表现。表示
Regularexpression正則表達式
什么是正則表達式?
用一个描写叙述字符串去验证还有一个字符串是否符合描写叙述字符串的特征。(不严谨,能够这么理解)
思考:比方表达式“12+”。描写叙述的意思是一个1和随意个2组成的字符串,那么'12'、’122‘、'122'….都符合描写叙述特征
正則表達式用来干嘛?
经常使用到的几种方式:
1、验证字符串是否符合指定要求:比方验证邮箱格式、password个数等等
2、查找符合指定要求的字符串。这个比从父串中查找子串方便太多
3、替换,更强大
思考:正则的用途无非2种,验证、字符串的处理(查找、替换、删除之类)
正則表達式的基础知识
一、单种匹配,匹配一次
1、普通字符:字母、数字、汉字、下划线、没有特殊定义的标点
举例::表达式"c",匹配字符串"adasc"。匹配结果:"c"。匹配位置:始于4,结束于5
2、转义字符:有特殊意义的字符。採用前面‘\+字母’的方式替换原字符
|
表达式 |
匹配特征 |
|
\r |
回车 |
|
\n |
换行符 |
|
\t |
制表符 |
|
\\ |
代表\本身 |
|
\^ |
匹配^本身 |
|
\$ |
匹配$本身 |
|
\. |
匹配.本身 |
举例:表达式"\$d",在匹配字符串"sas$d132"。匹配结果:"$d",匹配位置:始于3。结束于5
二、多种匹配,匹配一次
1、固定的多种匹配(匹配一次)
|
表达式 |
匹配特征 |
|
\d |
0~9的随意一个 |
|
\w |
A-Z,a-z,0-9,_中的随意一个 |
|
\s |
空格、制表符、换页符的随意一个 |
|
. |
匹配除了\n外的随意一个 |
举例:表达式"a.\d",匹配"123ab11d",匹配结果:"ab1",匹配位置:始于3。结束于6
2、自己定义的多种匹配(匹配一次)
使用方括号[],意思是匹配方括号中面的随意一个字符,[^]那就是匹配方括号中面字符以外的随意一个字符
|
表达式 |
匹配特征 |
|
[abc1] |
"a"、"b"、"c"、"1"中的随意一个字符 |
|
[^abc] |
除了"a"、"b"、"c"以外的随意一个字符 |
|
[a-f] |
a到f之间随意一个字符 |
|
[^a-f] |
除了a到f之间以外的随意一个字符 |
举例:表达式"[^123][456]",匹配"12345678",匹配的结果"45",匹配位置:始于3,结束于5
思考:理解[]代表当中随意一个字符。^代表字符以外的随意字符就可以
三、多种匹配,匹配多次
假设想要实现多次匹配,那么就要告诉描写叙述的表达式你想要匹配几次,这个东西就是"次数修饰",有一点须要注意的是"次数修饰"放到"被修饰的表达式"后面
|
表达式 |
匹配特征 |
|
{n} |
匹配n次 |
|
{m,n} |
匹配m~n之间的次数 |
|
{m,} |
匹配 >=m次 |
|
? |
匹配 0~1中间的次数 |
|
* |
匹配 >=0次 |
|
+ |
匹配 >=1次 |
举例:表达式"\d?[ab]*",匹配"abc123",匹配结果:"ab"匹配始于0。结束于2
思考:次数修饰符放到表达式后面用以表示反复的次数就可以
四、特殊匹配
|
表达式 |
意义 |
|
^ |
与字符串開始的地方匹配 |
|
$ |
与字符串结束的地方匹配 |
|
\b |
匹配一个单词的边界。也就是单词和空格之间的位置(不匹配不论什么字符,一边是\w。一边是非\w) |
|
| |
前后2个表达式是"或"的关系 |
|
() |
1、在被修饰匹配次数的时候。括号代表一个总体 2、去匹配结果的时候。括号内的匹配内容能够被单独取到 |
举例1:表达式"\bstart\b",匹配"go,start,end",匹配结果是"start"
举例2:表达式"(go)+",匹配"let's
gogo",匹配结果是"go go"
举例3:表达式"$(\d+\.\d*)",匹配"$12.33",匹配结果"$12.33"。
单独获取括号中面的内容:"12.33"
深入浅出理解iOS经常使用的正則表達式—基础篇[Foundation]的更多相关文章
- 正則表達式基础及java使用
正則表達式基础 正則表達式语法(1) 普通字符:字母,数字.汉子,下划线以及没有特殊定义的标点符号都是"普通字符".表达式中的普通字符.在匹配一个字符串的时候,匹配与之同样 ...
- apache rewrite 正則表達式基础
用了好几次rewrite,用的次数不是非常多,每次都忘,都得又一次上网上找一堆现看,总结一下,以免以后忘了 =====================分隔符===================== ...
- Python——正則表達式(2)
本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ======================== ...
- JAVA中正則表達式总结
昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...
- python进阶十_正則表達式(一)
近期状态一直不太好,至于原因,怎么说呢,不好说,总之就是纠结中覆盖着纠结,心思全然不在点上,希望能够借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想,假设真的是我自己的问题呢,曾经我 ...
- 使用正則表達式的格式化与高亮显示json字符串
使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...
- JavaScript正則表達式知识汇总
Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...
- JAVA中正則表達式总结(具体解释及用途)
很多语言,包含Perl.PHP.Python.JavaScript和JScript,都支持用正則表達式处理文本,一些文本编辑器用正則表達式实现高级"搜索-替换"功能.所以JAVA语 ...
- iOS正則表達式(一)
什么是正則表達式? 正則表達式是对字符串操作的一种逻辑公式. 作用? 在iOS开发中我们通常使用正則表達式来匹配给定的字符串是否符合我们的业务逻辑,比方说用户注冊帐号仅仅能是手机号或者邮箱等.我们还能 ...
随机推荐
- [转]getResource()和getResourceAsStream以及路径问题
原文链接:http://blog.sina.com.cn/s/blog_4b5bc0110100g22w.html 用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉 ...
- 〖转〗request.getparameter()和request.getAttribute()的区别
getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型 getParame ...
- 网页调用QQ聊天
把下面的复制到地址栏里,QQ号为你要聊天的人的qq号,如果你没有登录你自己的qq,首先会调出qq登录窗体. tencent://message/?uin=QQ号
- 随机获取oracle数据库中的任意一行数据(rownum)
最近看oracle资料的时候,了解rownum的概念,以前只知道对数据库表进行简单的增删改查: 看到了rownum的概念后,突然想到了好多业务场景应该都可以适用的,比如在进行随机发奖的时候, 我们就可 ...
- Swift中的协议
协议: 1.Swift协议用于定义多个类型应该遵守的规范 2.协议定义了一种规范, 不提供任何实现 3.协议统一了属性名, 方法, 下标, 但是协议并不提供任何实现 4.语法格式: [修饰符] pro ...
- POJ3111 K Best(另类背包+二分+变态精度)
POJ3111 K Best,看讨论区说数据有点变态,精度要求较高,我就直接把循环写成了100次,6100ms过,(试了一下30,40都会wa,50是4000ms) 第一次在POJ上看到下面这种东西还 ...
- Qt5.4静态编译方法
静态编译,就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so或.lib)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库.这样就可以发布单 ...
- sql server在使用xp_cmdshell
一.sql server在使用xp_cmdshell读取远程服务器上的文件时,要先将远程服务器的目录映射到本地 代码: exec master..xp_cmdshell 'net use P: \\ ...
- Win7下部署 .NET MVC网站 之 HTTP错误 403.14-Forbidden 解决方法
今天在 IIS 7 发布MVC 站点时 遇到 ”HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容 “ 的错误提示. 一番折腾后发现在web.config 中加入 ...
- ubuntu下的c/c++环境搭建
原文地址:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274556.html ubuntu下的c/c++环境搭建是比较简单,因为有apt和新立得 ...