如何简化包含多个OR操作符的指定正则表达式?
简化正则表达式方案
原正则表达式 a(r|i|ir|ri|irr|rri|rr)(ba|b|ab) 可通过归纳字符组合规律简化,无需大量|操作符:
分步拆解简化
- 中间字符分组
原中间分组的所有允许组合(r、i、ir、ri、irr、rri、rr)可归纳为两类规则:
- 1-2个
r,可搭配0-1个i(i可置于r的任意位置) - 单独的
i
据此可简化为:(r{1,2}i?|ir{0,2})r{1,2}i?覆盖r、rr、ri、rriir{0,2}覆盖i、ir、irr
- 末尾字符分组
原末尾分组的组合(ba、b、ab)是单独的b,以及b与a组成的两种两字符搭配,可简化为可读性较强的:(ab|b|ba)
最终简化正则
a(r{1,2}i?|ir{0,2})(ab|b|ba)
该正则可精准匹配目标字符串:ariba, airba, arba, arib, airb, arriba, arrba, airrba, airab, ariab
内容的提问来源于stack exchange,提问作者user3352263
相关产品推荐
相关产品推荐

