热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入浅出理解iOS常用的基础正则表达式(Foundation框架)

参考资料:cocoachina的zys475481075的文章几个单词Regular[regjʊlə]adj.定期的;有规律的Expression[ɪkspreʃ(ə)n;ek-]n.

参考资料:cocoachinazys475481075的文章

 

几个单词

 

Regular ['regjʊlə]adj.定期的;有规律的

Expression[ɪk'spreʃ(ə)n; ek-] n. 表现,表示

Regularexpression正则表达式

 

什么是正则表达式?

 

 

用一个描述字符串去验证另一个字符串是否符合描述字符串的特征。(不严谨,可以这么理解)

 

思考:比如表达式“12+”,描述的意思是一个1和任意个2组成的字符串,那么'12'’122‘'122'….都符合描述特征

 

正则表达式用来干嘛?

 

常用到的几种方式:

 

1、验证字符串是否符合指定要求:比如验证邮箱格式、密码个数等等

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]

af之间任意一个字符

[^a-f]

除了af之间以外的任意一个字符

 

举例:表达式"[^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底层开发接触较少。现在有了iPhone和可以虚拟MAC环境的电脑,希望能找到有效的iOS开发学习路径。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文详细介绍了Objective-C中的面向对象编程概念,重点探讨了类的定义、方法的实现、对象的创建与销毁等内容,旨在帮助开发者更好地理解和应用Objective-C的面向对象特性。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 在网站制作中随时可用的10个 HTML5 代码片段
    HTML很容易写,但创建网页时,您经常需要重复做同样的任务,如创建表单。在这篇文章中,我收集了10个超有用的HTML代码片段,有HTML5启动模板、空白图片、打电话和发短信、自动完 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文将详细介绍多个流行的 Android 视频处理开源框架,包括 ijkplayer、FFmpeg、Vitamio、ExoPlayer 等。每个框架都有其独特的优势和应用场景,帮助开发者更高效地进行视频处理和播放。 ... [详细]
  • 我在项目中发现设置了 GCC_NO_COMMON_BLOCKS = NO 的配置项,位于 Apple LLVM 编译器 3.1 的代码生成设置中。 ... [详细]
  • 本文详细介绍了如何在iOS5中创建和理解简单的Hello World应用,包括Interface Builder的使用、Objective-C源代码文件的结构以及事件处理机制。 ... [详细]
  • 本文介绍了iOS应用开发的主要框架,包括Foundation、UIKit、CoreData及CoreGraphics等,并探讨了开发iOS应用所需的硬件和软件环境,以及推荐的编程语言。 ... [详细]
  • 重写init方法后,属性声明后为什么不为nil? ... [详细]
  • 本文介绍了在 iOS 开发中设置图片和视图圆角的几种方法,包括通过 layer 设置圆角、使用贝塞尔曲线和 Core Graphics 框架,以及使用 CAShapeLayer 和 UIBezierPath。每种方法都有其优缺点,适用于不同的场景。 ... [详细]
  • 开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤
    开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤 ... [详细]
author-avatar
huyuping6215
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有