是否存在与(0 | 1)*(1100 | 1010 | 1001 | 0110 | 0101 | 0011)具有相同效果的简洁正则表达式?

The*_*ist 4 regex

基本上我想写一个正则表达式来表示任何{0,1}字符串,其最后4个字符具有相同数量的0和1.当然

(0 | 1)*(1100 | 1010 | 1001 | 0110 | 0101 | 0011)

会做的伎俩,但如果有更简洁的方式?

Avi*_*Raj 5

这个正则表达式可以解决问题.

^[01]*(?=.*?1.*1)(?=.*?0.*0).{4}$
Run Code Online (Sandbox Code Playgroud)

DEMO

^ 断言我们刚开始.

[01]* 匹配0或1,零次或多次.

正向前瞻(?=.*?1.*1)(?=.*?0.*0).{4}$断言最后4个字符必须包含两个1和两个0.如果是,则匹配整行.而且@nhahdth提出了一个更有效的方法.

^[01]*(?=.{4}$)(?=.*?0.*0).*?1.*1.*
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 也许更明确:`(0 | 1)*(?=(0*1){2})(?=(1*0){2})(0 | 1){4}` (2认同)