正则进阶之旅-五条

少年,入门正则后是不是很爽?
时间长了,你会有更复杂的需求希望正则帮你解决.通常这些知识不会在你入门正则的时候获得。所以名曰:进阶.

以下四则是我遭遇困境时,花费时间找出的妙方
时间重复消耗并无意义,你读了本文就该获得这些价值。

1. 怎么匹配相同的内容?

匹配连号的数字

111
222

使用表达式:
(\d)\1\1

分组竟然可以在原地用也是666.

2. 给Notepad++一个组命名

一般你可以:

//查找目标:
(?<有名字的组>abcd)  

//replace to:
${有名字的组}

特别的是如果你用的是notepad++,给一个组命名你需要:

//查找目标:
(?<有名字的组>abcd) 

//replace to:
$+{有名字的组}

3. 怎么匹配嵌套括号或者结构?

你需要用平衡组.如果你百思不得其解,知道这三个字,就可以了。
正则是可以解决这种无限嵌套结构的。我猜测正则应该可以处理这种结构吧,搜索了半天才知道答案。

(?<group>) 把捕获的内容命名为group,并压入堆栈
(?<-group>) 从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败
(?(group)yes|no) 如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分
(?!) 顺序否定环视,由于没有后缀表达式,试图匹配总是失败

详细信息参考这里.
http://blog.csdn.net/zm2714/article/details/7946437

.NET正则基础之——平衡组
http://blog.csdn.net/lxcnn/article/details/4402808

4. 注释

竟然有注释

(?#xxxx)

增加对匹配不会造成任何影响.

5. 非捕获分组-加速用

(?:\w\d)    非捕获
(\w\d)        捕获分组

正则引擎以为你要使用所有小括号括起来的内容,如果你不用这些分组可以标记.

结语

此外如果你有”通过正则合并两段文字”功能的需求,可以使用我的程序Batter_Regex ,它是一个HTML页面,你可以在任何浏览器中运行它.
很遗憾,原生的正则并不提供“正则合并“,所以我做了Batter_Regex这个工具提供这个功能。为的是有朝一日不把自己累死。

对正则的学习伴随着我的成长,目前我没有更多的需求对正则.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值