多正则匹配引擎(一)

在工作过程中,我们需要使用模式匹配来表达用户定义的条件。

这样的模式条件是很多的, 大约几十万。

单个模式条件支持什么功能? 需求是无止境的。我们先是定义了一个简单的格式,属于类似正则,但是丢弃了一些复杂的功能。

随着时间的推移,客户要求越来越多,最后就是能不能支持"所有"的正则功能?

 

汇总起来,我们的需求如下:

 

   开发一个引擎,支持至少几十万级别的正则条件高效匹配。

  单个正则要求支持:

 普通文字  : 用来匹配普通字符

转义符 \ \d \D \w \W \n \s \S \b \B \x \u: 常用的转义字符

字符集  .  [xxx]  [^xxx]   : 字符范围

unicode 属性 \p{XXX} \P{xxx}; 在unicode 规范中类别为 XXX的字符或类别不是XXX的字符

重复  * + ? , {m,n} ,包括非贪婪的?

分支选择  |

分组 与分组捕获   ()  (? )

0宽度环视 :(?=X )(?!X) (?<=X)  (?<!X)

anchor:  ^ $

扩展:

      <A,B> 整数范围:  用来匹配范围在A B间的整数

      <NAME> 命名子串: 用来包括一个名称为 NAME 的子正则

       \h{XX}   动态hook: 用来在回调中动态判断该位置是否匹配

 

额外需求:

     提供Java SDK

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值