目录
概念:
正则表达式是对字符串操作的一种逻辑公式
概念解析:
1、正则表达式是一种逻辑公式
2、一种对字符串操作的逻辑公式
3、对字符串的什么操作呢?对字符串的一种过滤,搜索符合限定条件(逻辑公式)的字符串
正则表达式的基础知识:
1、字符串的组成
对于字符串“123”而言,包括三个字符,四个位置。
2、占有字符和零宽度
占有字符:正则表达式匹配到的东西,不是一个位置,而且能保存到陪陪的结果当中,这样的就叫做占有字符。
零宽度:只匹配一个位置,或者匹配的内容并不保存到匹配结果中,就称作零宽度
小结:占有字符是互斥的,也就是一个字符,同一时间只能由一个子表达式匹配
零宽度是非互斥的,一个位置,可以同时由多个零宽度的子表达式匹配。
举个零宽度的例子:用正则表达式来筛选找到一个符合条件的位置,用来取到此位置之前或者之后的字符。
123ab456ab789ab 正则表达式的条件是:取‘ab’这个位置之前的所有字符(这也就是所谓的零宽度断言)
3、元字符
正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。正是元字符才使正则表达式具有处理能力。
限定符 | 描述 | 模式 |
. | 匹配出换行符以外的任意字符 | \d*\.\d |
\w | 匹配字母数字或下划线或者汉字或者下划线 | "be+" |
\s | 匹配任意空白符 | "rai?n" |
\d | 匹配数字 | ",\d{3}" |
\b | 匹配单词开始或结束,它只是匹配一个位置 | "\d{2,}" |
^ | 匹配字符串开始 | "\d{3,5}" |
$ | 匹配字符串结束 | "\d{3,5}" |
4、转义字符
转义字符是专门用在元字符身上的。如果你想要得到元字符本身的话需要使用"\"来取消这些元字符的特殊意义
5、字符类型
首先字符类型使用"[]"包括起来,且大小写要区分
例子:
[a-zA-Z0-9] 这个正则表达式表示:匹配一个字符,这个字符可以是a-z范围内或者A-Z范围内或者0-9范围内的任意小写或者大写或数字字符
[ABC]这个表示:匹配一个字符,这个字符可以是A,可以是B,可以是C
6、重复
代码/语法 | 说明 |
* | 重复0次或多次 |
+ | 重复一次或多次 |
? | 重复零次或1次 |
{n} | 重复n次 |
{n,} | 重复至少n次 |
{n,m} | 重复至少n次,但不多于m次 |
例子: [ABC]* 匹配0个或多个字符,这些字符可以是A,可以是B,可以是C
[ABC]{5,10} 匹配5-10范围内个字符,这些字符可以是A,可以是B,可以是C
7、分支条件
指的是有几种规则:用“|”把不同的规则分开
例子:[A]|[B]|[C]|[D] 匹配一个字符:这个字符可以是A或B或C或D
8、分组
使用小括号()来指定字表达式
例子:(\d{1,3}){3}\d{3} 表示:把我们分组的小括号里面的东西重复三次,也就是说我们至少匹配3个最多匹配9个数字,后面再加上三个数字
9、反义字符
有时需查找不属于某个能简单定义的字符类的字符。比如查找除了数字以外其它任意字符都行的情况,这时需用反义:
代码/语法 | 说明 |
\W | 匹配任意一个不是字母或数字下划线或汉字的字符 |
\S | 匹配任意一个不是空白符的字符 |
\D | 匹配不是数字的字符 |
\B | 匹配不是单词开头或者结尾的位置 |
[^X] | 匹配除了X以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
小结:
这篇博客属于基础中的基础,小编也给出了自己的理解,并基本都附有小例子,帮助大家理解。如果这篇博客的东西你看明白啦,那么正则表达式的基础你已经学会了。感谢您的阅读,如果喜欢,记得给小编点赞哦?