正则表达式

正则表达式(难点)

什么是正则表达式:

​ 是一套用来匹配字符串的规则

用途:

​ 1.检测输入的字符串是否合法====》表单认证

​ 2.从大文件中匹配所有符合规则的内容===》日志分析\爬虫

正则表达式测试网站:https://tool.chinaz.com/regex/

字符组

[]一个中括号只表示一个字符组,而一个字符组只匹配一个字符

例如[abc]代表匹配a或b或c

[0-9],[a-z],[A-z]等都是通过ascii码来匹配但只能从大到小匹配

注意Z到a之间还有字符,所以[A-z]不只代表所有大小写字母

所有大小写字母用[a-zA-Z]表示。

空格、enter和tab的匹配

直接打空格、/t、/n

注意 或关系的不用连接符直接写在一块

元字符

[] [^]

\d表示匹配所有数字 digit

\w表示匹配所有数字字母下划线 world

\t表示tab

\n表示换行

\s表示匹配所有空白 space

\b匹配单词的结尾

\D表示非数字

\W表示非数值字母下划线

\S表示非空白

在正则表达式中所有能够帮助我们匹配到内容的符号都是正则中的元字符

​ [\d\D]表示匹配所有

.匹配除换行符外的所有可以与其他符号搭配使用表示某

^以某某开头

$表示以某某结尾

^和$共用就约束了在其之间的正则位数和原字符串一样

|表示或,匹配a或b,并且a成功后就不在匹配b,由于正则表达式的匹配规则,需要把有重叠部分的长字符串放在前面

\表示取消字符的特殊含义比如在匹配网址时的.

()表示分组,约束|符号或者某一元字符的作用范围

​ 例如:www\ .(baidu|jd|taobao)\ .com

​ 一个元字符只匹配一个字符

量词

用来描述匹配次数的词

一个元字符后跟一个量词用来约束这个元字符的匹配次数

{n}表示匹配n次

{n,}至少匹配n次

{n,m}表示至少匹配n次,至多m次

?表示匹配0次或一次{0,1}

+表示匹配1次或多次{1,}

*表示0次或多次{0,}

数轴表示三个符号

image-20210816012953231

匹配0次的意义:

匹配零次或多次表示一个值可出现也可不出现

匹配小数:\d+\ .\d+

匹配整数或小数:\d+\ .?\d*或者\d+(\ .\d+)?

匹配电话号码:开头是一 第二位3-9 一共有11位

1[3-9]\d{9}

验证合法性:^1[3-9]\d{9}$匹配输入的开头结尾

贪婪匹配

在量词范围允许的情况下尽量多的匹配

与计算机的回溯算法有关

.*表示匹配最后一个x前的所有字符

惰性匹配

在条件允许的情况下尽量少匹配

在量词后加问号表示惰性匹配

.*?x表示匹配任意字符 任意多次数 但一遇到x就停下来

转义符

原本有特殊意义的字符到了字符串会取消特殊意义

取消特殊含义一共有两种方法

1、在字符前加\

2、对于某些特殊字符用字符组括起来

​ [(),*+?]在字符组中表示原意

​ —号在字符组中有特殊含义需要转译

posted @ 2021-09-18 21:54  rikey123  阅读(55)  评论(0)    收藏  举报