目录
在工作中,对一些数据的校验,以及判断等都会用到正则表达式,本周利用空闲时间学习了一下有关正则表达是的知识
一、什么是正则表达式
正则表达式是一种描述字符串的语法规则,是一个特定的格式化模式,可以匹配,替换,截取匹配的字符串。
二、正则表达式的语法规则
一个完整的正则表达式由两部分组成,元字符和文本字符。那么会有人问什么是元字符,什么又是文本字符呢?
元字符:例如 * ,?,+等属于元字符
文本字符:就是普通的文本,如字母和数字等
PCRE风格的正则表达式都放在"/"之间
三、正则表达式的规则
1、行定位符(^和$)
行定位符是用来描述字符的边界,"^"表示行的开始,"$"表示行的结束
^tm它表示tm的开始位置是行头
2、单词分界符(\b,\B)
比如要在字符串中匹配单词tm,而不是单词的一部分,此时就可以使用单词分解符"\b"
\b:查找的字符串为一个完整的单词\btm\b
\B:查找的单词是其他单词中的一部分 \Btm\B
3、字符类
正则表达式是区分大小写的,如果要忽略大小写,直接使用"[]",注意点:一个[]只匹配一个字符
例如:tm忽略大小写[Tt][Mm]
四、选择字符串(|)
选择字符串可以理解为"或"
例如[Tt][Mm]等价于(T|t)(M|m)
[]和(|)的区别:[]只能匹配单个字符,而|可以匹配任意长度的字符,例如 TM|tm|Tm|tM
五、连字符(-)
例如变量的命名只能以字母和下划线开始,此时如果使用正则表达式来命名,则[a-zA-Z]
六、排除字符([^])
[a-zA-Z]:表示以字符和下划线开头
[^a-zA-Z]:表示不以字符和下划线开头
七、限定符(?*+{n,m})
?:匹配前面的字符零次或一次 例如 colou?r 可以匹配成 colour或color
*:匹配前面的字符零次或多次 例如 go*gle 可以匹配为 ggle或goo...gle
+:匹配前面的字符一次或多次 例如:go+gle可以匹配成 goole 或goo...gle
{n}:匹配前面的字符n次 例如 go{2}gle 只匹配 google
{n,}:匹配前面的字符,最少n次 例如:go{2,}gle 该表达式匹配的范围 google 到goo....gle
(n,m):匹配前面的字符最少n次,最多m次