学习使用 正则01

今天项目时候又一个需求将形如

02_xxx_xxx
xxx_02_xxx

中的编号提取出来,为了方便修改,想到将提取得信息 通过正则提取

例1

02_xxx_xxx
提取的话相对简单 直接 提取前两位数字

^\d{2}

例2

xxx_02_xxx 这里的想法是先提取出 " _02_"

\d{2}

然后 再对 “_02_”进行

\d{2}

既然是学习正则 那就要 进行一个系统性的学习。先从最基础的开始。

常用得限定符
代码/语法说明
*重复零次或多次
+重复一次或多次
重复零次或一次
{n}重复n次
{n,}重复n次或更多
{n,m}重复n次到m 次

ip地址判定

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

使用分组后 对分组引用 一定是 \k<name>

((?\<name>2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}\k\<name>
分类代码/语法说明
(exp)匹配exp ,并捕获文本到自动命名的组里
捕获(?<name>exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name’exp)
(?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?=exp)匹配exp前面的位置(匹配后面是exp的数据)
零宽断言(?<=exp))匹配exp后面的位置(匹配前面是exp的数据)
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配exp后面的位置(匹配前面是exp的数据)
注释(?#comment)这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
(exp):
正则:  \d\d
输入:  000  aa11
结果: 00 11  
(?<name>exp)
正则:  (\d\d(?<group>\w)) \k<group>
输入:  00a b     11a a
结果: 11 aa
解释: 分组命名的用法是 (?<name> )  获取分组的方式 \k<name> 
	  分组按编号获取  \1  \2  \3 分别是获取 第一个小括号中的数据  第二个小括号中的数据
(?:exp)
正则:  (\d\d(\w)) \2
输入:  00a a  00b b   00a b
结果: 00a a   00b b 
对比使用 ?:

正则:  (\d\d(?:\w)) \2
输入:  00a a  00b b   00a b
结果: 
解释:无,因为 没有 分组2  ?:将分组2的分配给取消了

###*?

正则 : a.*?b
输入 :ab aab  abc abab 
输出:  ab aab  ab ab  ab 

正则 : a.*b    (少了  ?)
输入 :ab aab  abc abab 
输出:  ab aab  abc abab (输入都输出回来了  a开头,b结尾,整个输入都是)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值