正则表达式

目录

1.正则表达式的入门

1.1基础入门

1.2字符组

1.3快捷方式

2.正则表达式的进阶

2.1分组和回溯引用

2.2替换和标记

2.3先行断言

2.4后行断言


1.正则表达式的入门

1.1基础入门

   匹配一些简单的需求

 1.1.1字符组

允许配一组可能出现的的字符

[Jj]ava对应java和Java

  1.1.2区间

   如果匹配人以数组[1-9]

   如果想要匹配所有小写字母[a-z]

想要匹配所有大写字母可[AZ]

  1.1.3匹配特殊字符

 ---:\-        []:\[      ():\(

 1.1.4取反

比如:匹配一段不包括数字的正则

[^0-9]

不含小写字母的正则

1.2匹配多个数据

1.2.1重复

匹配028-88854和343-89489:\d{3}-\d{5}

1.2.2重复区间

有的时候我们并不知道有多少位,就可以利用重复区间

比如说匹配073和0683,可以是三个或者四个:\d{3,4}

1.2.3开闭区间

有时候我们遇到的字符数组没有边界

比如说匹配一个以f开头的数据:f.{1,}

1.3快捷方式

 1.3.1快速匹配数字和字母

  利用快捷方式来任意匹配单词字符匹配:\w

  任意数字匹配:\d

1.3.2匹配空格

如果想要空白间隔的单词:\s

1.3.3单词边界

如果想要mater整个单词的匹配,就是一段文字中有mater这个单词,而不是单个字符

/bmater/b

1.3.4快捷方式取反

将小写改为大写就是快捷方式取反

不以字母开头的单词:\W

1.3.5开始和结束

指定一个字符串作为结束或者开始

比如说ppp作为字符串的开头:/^ppp/:xxxxppp这段字符串匹配

比如说ppp作为一段文本的结尾:/ppp$/

1.3.6任意字符

.字符表示任意单个字符

1.3.7可选字符

匹配hiut和hit,可以观察到u字符可以存在也可以不存在,这个时候我们借助可选字符?

hiu?t

2.正则表达式的进阶

2.1分组和回溯引用

  2.1.1分组

在正则表达式中还提供了一种表达式分组机制,当使用分组时,除了获得整个匹配。还能够中选择每一个分组

分组有一个非常重要的功能,所以被称为捕获分组,用来捕获数据

示例使用分组提取中的数据<p>正则表达式</p>

<p>(.*?)</p>

 2.1.2非捕获分组

例如想要匹配两个字母组成的单词或者四个字母组成的单词就可以使用非捕获分组(?:表达式)

2.1.3分组的回溯引用

例如:匹配一段HTML代码,比如可能编写这样一段正则表达式:0123<font>提示</font>abcd

老手法:</w+>.*?<‘/\w+>、

但是很快会发现一个问题:

<font></bat>也会被匹配上,这样需求不会被实现,这时就要需要配分组回溯引用

<\w+>.*?<‘/\1>:通过这个例子\1就代表一个分组,使得前后相同

这样我们只能匹配到一对标签,体中的内容

2.2替换和标记

2.3先行断言

  2.3.1正向先行断言

:指在某个位置向右看,表示所在位置右侧必须匹配(?=表达式)  表达式

示例:编写一个:

  至少一个大写字母或小写字母,至少一个数子,至少8个字符:

(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.{8})

2.3.2反向先行断言

:保证右边不能出现某字符

示例:不是qq邮箱的数据

\w+@(?!qq.com).*

2.4后行断言

2.4.1正向后行断言

指在某个位置向左看,表示所在位置左侧必须能匹配(?<=表达式)表达式

(?<=王)\S

2.4.2反向后行断言

指在某个位置向左看,表示所在位置左侧不能匹配(?<!表达式)表达式

请用正则表达式匹配yige$

(?<!\$)\$[^\$]+\$(?!\$)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值