正则表达式从右到左匹配位置

时间:2017-04-26 22:09:50

标签: regex

我希望你能帮助我,我正在研究如何制作正则表达式,现在我遇到了这个问题:

编写一个正则表达式,接受0和1的字符串,并且从右到左的位置5上有1。

e.g。接受10000是因为它从右到左在位置5上有1或者接受010000,0010000或1110000。

我想的是:(0 + 1)* + 1(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)

2 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

1[01]{4}$

如果您想匹配完整输入,请使用:

^[01]*1[01]{4}$

此处1[01]{4}$确保我们在匹配0之后有4位11,从而使1从右到左位于第5位。

RegEx Demo

答案 1 :(得分:0)

嗯 - 这样想吧。它需要尽可能多的1和0,然后是1,然后是4个或0。

所以:

my_regex = 
    "^[01]*" +  // Starts with One or zero, zero or more times 
    "1" +       // Followed by a one
    "[01]{4}$"  // Followed by four things, which could be either zero or one, before ending. 

你的(0 + 1)语法看起来很陌生。我正在使用字符类来指定[01]的东西,但你可以在它们的位置使用(0 | 1),这是你的尝试看起来更像。

完整的事情是^[01]*1[01]{4}$