正则表达式 (简单易懂)

正则表达式


  1. 输入字符串的开始位置和结束位置的匹配

^ :匹配输入字符串的开始位置
$ :匹配输入字符创的结束位置

e.g: ^[0-9]+bbb$

[0-9]匹配单个数字,[0-9]+匹配一个或多个数字,并以bbb结尾


2.运算符优先级

下表描述的优先级从高到低,相同优先级从左到右

运算符描述
\转义符
(),(?=),[]方括号和圆括号
+,*,?,{n},{n,},{n,m}限定符
$,^, \任何元字符,任何字符对应的序列和定位点
|“或操作”,替换,一般使用括号创建子表达式
 e.g:   h|dooo     : 匹配的是   h   或者   dooo
       (h|d)ooo   : 匹配的是hooo  或者  dooo

3.匹配规则

基本模式匹配

模式,一组描述字符串特征的字符,是正则表达式的基本元素,往往用一个特殊字符表示一个范围内,重复出现,或表示上下文。

  a. 匹配由特定字符开始的字符串
         ^first : 匹配到以first开头的字符串
   b.匹配由特定字符结束的字符串
         last$ :匹配到以last结尾的字符串
   c.
         fist :匹配任何包含该模式的字符串
   d.精准匹配
         ^right$ :精准匹配,只匹配right字符串(个人觉得体现不出正则表达式强大之处)
   e.转义序列匹配
         ^\ :匹配以\ 开头的字符


字符簇

  [[AaBbCcDd]只能表示一个字符

[a-z] //匹配所有的小写字母
[A-Z] //匹配所有的大写字母
[a-zA-Z] //匹配所有的字母
[0-9] //匹配所有的数字
[0-9.-] //匹配所有的数字,句号和减号
[ \f\r\t\n] //匹配所有的白字符

  用 连子号   -   表示一个一个字符的范围

  当在一组方括号里使用 ^ 时,它表示"排除"的意思,常常用来剔除某个字符。这里注意与开始位置匹配相区分

[^a-z] //除了小写字母以外的所有字符
[^\\\/] //除了(\)(/)之外的所有字符
[^\"\’] //除了双引号(")和单引号(’)之外的所有字符


重复出现

  跟在字符或字符簇后面的花括号{}用来确定前面的内容的重复出现的次数。一个数字 {x} 的意思是前面的字符或字符簇只出现x次 ;一个数字加逗号 {x,} 的意思是前面的内容出现x或更多的次数 ;两个数字用逗号分隔的数字 {x,y} 表示 前面的内容至少出现x次,但不超过y次。我们可以把模式扩展到更多的单词或数字。注意有没有开始位置匹配符导致的两者的差别

^[a-zA-Z_]$    所有的字母和下划线
^a{2,}   可以匹配aardk和aab,但aple不行
a{2,}   可以匹配aad和kaa,但Nantuiuiet不行
.{2}   所有的两个字符


*   匹配0个或多个字符
.  匹配除换行符之外的任何单个字符
+   匹配1个或多个字符
?  匹配0个或一个字符

部分元字符的参考列表



下面补充一下正则的一些基础知识。

\f 匹配换页符
 \n 匹配换行符
 \r 匹配回车符
 \t 匹配制表符
 \v 匹配垂直制表符
模式修正符
 i 不区分大小写
   m 此模式中如果有回车或换行,^和$将匹配每行的行首和行尾
 s 让.能匹配\n
 x 忽略空白
 U 取消贪婪,相当于(.*?)
 A 与^效果一样
 D 结尾处不忽略回车 ,在结束处有符的时候,在匹配的字符串后面加上回车,符的时候,在匹配的字符串后面加上回车,依然能够匹配它成功。但是加上D之后,结尾的回车,不再匹配

Unix系统里,每行结尾只有“<换行>”,即”\n”;
Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即”\n”;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值