unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

说道正则表达式大家都知道这个功能很强大,但是大家在学习的过程中又是一头雾水。因为那些符号和字符有点深奥,作者也是这样子的。

我在学习正则表达的过程中,有三个疑惑的点:

  • 第一:在学习的过程中,如何去边学习边实践,致知于行呢?
  • 第二:为什么表达式要这么写
  • 第三:为什么输入一个字符串,经过正则表达式函数后,输出就是这个结果。

针对第一点,推荐一个正则表达式在线测试工具:regex101.com,另外也可以自己编程调用正则表达式的API来进行验证。
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
正则表达式其实就是在执行搜索时的格式,它由一些字母和数字组合而成。 例如:一个正则表达式 the,它表示一个规则:由字母t开始,接着是h,再接着是e。

"the" => The fat cat sat on the mat.

1、正则表达式的主要依赖——元字符

元字符 描述
. 句号匹配任意单个字符除了换行符。
[ ] 字符种类。匹配方括号内的任意字符。
[^ ] 否定的字符种类。匹配除了方括号里的任意字符
* 匹配>=0个重复的在*号之前的字符。
+ 匹配>=1个重复的+号前的字符。
? 标记?之前的字符为可选.
{n,m} 匹配num个大括号之前的字符或字符集 (n <= num <= m).
(xyz) 字符集,匹配与 xyz 完全相等的字符串.
| 或运算符,匹配符号前或后的字符.
\ 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ |
^ 从开始行开始匹配.
$ 从末端开始匹配.
  • 或运算符:a (cat|dog),a 后面可以匹配cat或者dog。中间的括号必不可少。
    unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

  • 花括号:输入 /ab{2,4}c,表示a和c之间的b可以出现2个到4个。
    unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
    {2,}表示可以是2或2个以上的b
    unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

  • 锚点
    在正则表达式中,想要匹配指定开头或结尾的字符串就要使用到锚点。^ 指定开头,$ 指定结尾。

^ 用来检查匹配的字符串是否在所匹配字符串的开头。
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
$ 号 用来匹配字符是否是最后一个。
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

2、重复次数

后面跟着元字符 +,* or ? 的,用来指定匹配子模式的次数。 这些元字符在不同的情况下有着不同的意思。

  • 加号:输入:/(ab)+c,表示ab可以出现多次或1次,后面还要有c。 >=1
    unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

  • 问号:输入:/ab?c,可以匹配一个或零个字母b ,可有可无
    unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

  • 星号:输入:/ab*c,可以匹配前面的字母b, 可以是1个b,多个b,没有b。 >=0
    unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

2、 字符类

  • 字符类——方括号:输入:/[abc]+,匹配与abc相关的单词。只要出现abc的字母就会匹配。
    unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
    指定字符的范围

输入:
[a-z]+,匹配所有带小写字母的
[A-Z]+:匹配所有大写字母的
[0-9]+:匹配所有带有数字的
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

[^0-9]+:表示匹配所有的非数字字符,包括换行符
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

  • 字符类——元字符
    正则表达式为我们预先定义好了一系列的常用字符类型,比如数字,空白符,单词开头和结尾等。大部分元字符都是以反斜杠开头。大写表示反义

  • 简写字符集

简写 描述
. 除换行符外的所有字符
\w 除换行符外的所有字符
\W 匹配所有非字母数字,即符号,等同于: [^\w]
\d 匹配数字: [0-9]
\D 匹配非数字: [^\d]
\s 匹配所有空格字符,等同于: [\t\n\f\r\p{Z}]
\S 匹配所有非空格字符: [^\s]
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\p 匹配 CR/LF(等同于 \r\n),用来匹配 DOS 行终止符

4、贪婪匹配和懒惰匹配

正则表达式默认采用贪婪匹配模式,在该模式下意味着会匹配尽可能长的子串。
只匹配所有的<html>标签, +和.可以匹配出两个html之间的所有字符串。
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
加上?之后,为懒惰模式。

unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

5 实战

匹配所有的RGB值

step1 首先前面要加上#,
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

step2 接下来后面可以是数字,字母等字符,但是只能限定在0-9和A-F,a-f之间
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

step3 长度为6
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

step4 后面就是单词的边界了,不能再有其他单词,叫\b

最后结果如下:
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

匹配IP地址

unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
上面这样写对于256这种不合法的IP地址过滤不掉,需要将数字大小限定在255以内。

改进方法:
step1 : 数字部分 : 大于200的, (25[0-5])|(2[0-4]\d) 小于200的,[01]?\d\d?
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

step2: 加上 . : .
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
step3: 重复三次,在后面加上数字
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

step4: 可以看到前面有数字小数点无法过滤,所有还需要加上^和$
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!
unity3D学习3——正则表达式 图文并茂 10分钟完美通关 !!!

上一篇:Unity3D 本地数据持久化几种方式


下一篇:Unity3D开发学习⒇ 掉落失败,延迟方法,SceneManager