正则 环视 oracle,环视正则 - travler的个人空间 - OSCHINA - 中文开源技术交流社区...

一.语法结构 1.环视结构不匹配任何字符,只匹配文本中的特定位置.也有人称之为零宽断言.

2.环视的特点 <1> 不会"占用"任何文本,只匹配一个"位置". <2> 只是简单的测试: 能够在当前位置匹配后面(右侧)的文本(顺序),或者能够在当前位置匹配前面(左侧)的文本(逆序).

3.环视类型及表达式

(?=…) 顺序肯定环视,从左至右,子表达式能够匹配右侧文本.

(?!…) 顺序否定环视,从左至右,子表达式不能匹配右侧文本.

(?<=…) 逆序肯定环视,从右至左,子表达式能够匹配左侧文本.

(?

3.限制

多数实现方式都限制了逆序环视中的表达式长度;而顺序环视则没有限制.

第一级;Perl和Python的限制是最严格的,逆序环视只能匹配固定长度的文本,也就是说逆序环视中不能使用量词(*、?、+、{m,n}).例如(?

第二级;PCRE(因为包括php)支持在逆序环视中出现多选分支,所以可以写为"(?

第三级;sun的Java regex package支持匹配任意长度的文本,但是其长度不能为无限.也就是说"(?

第四级;.NET支持容许逆序环视中的子表达式匹配任意长度的的文本.甚至包括(?

二.示例

"The US population is 29 844 4215 "将其中的数字部分改为"298,444,215".

echo "The US population is 298444215"|perl -aple 's/(?<=\d)(?=(\d\d\d)+$)/,/g'

echo "The US population of 298444215 is groing"|perl -aple 's/(?<=\d)(?=(\d\d\d)+(?!\d))/,/g'

echo "The US population of 298444215 is groing"|perl -aple 's/(\d)(?=(\d\d\d)+(?!\d))/$1,/g'

echo "The US population of 298444215 is groing"|perl -aple 's/(\d{3})(?=\d)/$1,/g'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值