正则表达式的笔记

  1. 正则表达式的开发一定要使用工具(除非特别简单的),推荐RegExBuilder.
  2. 最难以理解的是零宽断言和组,其中捕获组说明如下

  (?'group') 把捕获的内容命名为group,并压入堆栈(Stack)

  (?'-group') 从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败

  (?(group)yes|no) 如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分

  (?!) 零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败

 3.   正则表达式的本身,是(位置+长度)的匹配,而且匹配的部分,要满足正则表达式位置的连续。而零宽断言中的

(?=exp)

匹配exp前面的位置

(?<=exp)匹配exp后面的位置

 都是匹配位置。

 4.经过艰苦的思考,发现(?<=exp)的exp部分是从右向左匹配字符串的。

比如,下面的正则表达式,因为(?(t)(?'f'')|(?'x'"))* 先执行,会给x的组加上匹配,这样会导致(?(x)()|()),只会执行红色的部分。

 (?<=^[^'"]*
(?(x)()|())
[^'"]*
(?(t)(?'f'')|(?'x'"))*
[^'"]*
)
1

    5.  <的都应该出现在前面,比如

(?<!exp)匹配前面不是exp的位置

(?<=exp)匹配exp后面的位置

 

转载于:https://www.cnblogs.com/Rousef/archive/2010/05/17/1737250.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值