參考资料: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]的更多相关文章

  1. 正則表達式基础及java使用

    正則表達式基础 正則表達式语法(1)     普通字符:字母,数字.汉子,下划线以及没有特殊定义的标点符号都是"普通字符".表达式中的普通字符.在匹配一个字符串的时候,匹配与之同样 ...

  2. apache rewrite 正則表達式基础

    用了好几次rewrite,用的次数不是非常多,每次都忘,都得又一次上网上找一堆现看,总结一下,以免以后忘了 =====================分隔符===================== ...

  3. Python——正則表達式(2)

    本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ======================== ...

  4. JAVA中正則表達式总结

    昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...

  5. python进阶十_正則表達式(一)

    近期状态一直不太好,至于原因,怎么说呢,不好说,总之就是纠结中覆盖着纠结,心思全然不在点上,希望能够借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想,假设真的是我自己的问题呢,曾经我 ...

  6. 使用正則表達式的格式化与高亮显示json字符串

    使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...

  7. JavaScript正則表達式知识汇总

    Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...

  8. JAVA中正則表達式总结(具体解释及用途)

    很多语言,包含Perl.PHP.Python.JavaScript和JScript,都支持用正則表達式处理文本,一些文本编辑器用正則表達式实现高级"搜索-替换"功能.所以JAVA语 ...

  9. iOS正則表達式(一)

    什么是正則表達式? 正則表達式是对字符串操作的一种逻辑公式. 作用? 在iOS开发中我们通常使用正則表達式来匹配给定的字符串是否符合我们的业务逻辑,比方说用户注冊帐号仅仅能是手机号或者邮箱等.我们还能 ...

随机推荐

  1. linux cat /proc/cpuinfo

    #cat /proc/cpuinfo processor : 0 #逻辑处理器的唯一标识符 vendor_id : AuthenticAMD #CPU厂商ID信息,如果处理器为英特尔处理器,则vend ...

  2. vim的基本使用方法

    头记:vim作为被大多数程序员所推崇的编辑器,是源于它的自由灵活以及令人舒服的输入模式,但对于新手来说无疑是个噩梦(需要记太多的命令), 而作为使用了vim有一段时间的我来说,总结下常用的命令,以备新 ...

  3. BitmapFactory 加载图片到内存

    Bitmap占用内存分析 Android的虚拟机是基于寄存器的Dalvik,它的最大堆(单个进程可用内存)大小一般是16M,当然不同设备是不一样的,可以查看/system/build.prop文件,[ ...

  4. Java初转型-Maven入门

    原系列名:Maven学习总结(一) 原博文出自于:http://www.cnblogs.com/xdp-gacl/p/3498271.html 感谢! 一.Maven的基本概念 Maven(翻译为&q ...

  5. Draggable(拖动)组件

    一.加载方式 //class 加载方式 <div id="box" class="easyui-draggable" style="width: ...

  6. 修改Sharepoint 文档库列表点击Excel文件默认跳转到Excel Service服务 xlviewer.aspx页面

    在Sharepoint 文档库中,当点击库中的一个Excel文件时,Sharepoint默认为转跳到Excel Services上,无论是Sharepoint 的是否开启了Excel Service, ...

  7. unity中数据的持久化存储

    unity 提供了PlayerPrefs这个类用于存储游戏数据到电脑硬盘中. 这个类有10个函数可以使用 Class Functions类函数 SetInt Sets the value of the ...

  8. dubbo No provider available for the service com.alibaba.dubbo.monitor.MonitorService from registry

    No provider available for the service com.alibaba.dubbo.monitor.MonitorService from registry http:// ...

  9. Python新手学习基础之数据类型——变量

    关于Python的变量是这样描述的: 变量是存储在内存里的一个值,通过变量名,我们可以访问到该变量的值. 上面这几行代码中,price,count和sum都是变量,Python是动态类型语言,变量是不 ...

  10. pyqt5:标签显示文本框内容

    文本框(lineEdit)输入文本,标签(label)就会显示文本框的内容. 原理如下: 输入文本时,lineEdit控件发射信号textChanged(),label收到后触发setText()槽. ...