正则表达式——文本定位

正则表达式——文本定位:

一、应当具备的两种思维
1、用字符的角度看文本
2、区分元字符和特殊符号

*这里说的文本定位并非是定位某些字符,而是定位某些分界

环视(lookaround)——不匹配字符串,仅仅匹配文本中特定位置
- 顺序环视:
肯定型顺序环视:如(?=\d),当前位置右侧是数字则匹配成功
否定型顺序环视:如(?!\d),当前位置右侧不是数字则匹配成功
- 拟序环视:
肯定型顺序环视:如(?<=\d),当前位置左侧是数字则匹配成功
否定型顺序环视:如(?

二、任务例子
有三个字符串,对其中数字字符串按从右向左每隔三位进行定位

字符串1:I borned in 1980 and I have 1235436405754 dollars
字符串2:I borned in 1980s and I have 1235436405754 dollars
字符串3:I borned in 1980 and I have 1235436405754

正则一:(?<=\d)(?=(\d\d\d)+$)
字符串1定位结果:无法匹配
字符串2定位结果:无法匹配
字符串3定位结果:I borned in 1980 and I have 1,235,436,405,754

【分析】
1、(?<=\d)分界左边应该有数字
2、?=(\d\d\d)分界右边应该有三位数字
3、’+$’ 匹配多个(\d\d\d),$确保后边不存在其他字符
4、字符串中,如果数字字符右侧有非数字字符不可以匹配

正则2:(?<=\d)(?=(\d\d\d)+\b)
字符串1定位结果:I borned in 1,980 and I have 1,235,436,405,754 dollars
字符串2定位结果:I borned in 1980s and I have 1,235,436,405,754 dollars
字符串3定位结果:I borned in 1,980 and I have 1,235,436,405,754

【分析】
1、\b匹配单词的开始或结束,通常英文的单词是由空格或标点符号或换行为分隔的,但是\b并不代表这些单词分隔符中的任何一个,只代表一个位置。

正则3:(?<=\d)(?=(\d\d\d)+\s)
字符串1定位结果:I borned in 1,980 and I have 1,235,436,405,754 dollars
字符串2定位结果:I borned in 1980s and I have 1,235,436,405,754 dollars
字符串3定位结果:无法匹配(后边没有空格,无法对应\s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值