二进制字符串正则表达式控制位置

时间:2013-08-04 07:24:01

标签: java regex

我想写一个正则表达式,它匹配所有长度为零或更长的二进制字符串。要求是奇数位置必须为1,偶数位置可以是1或0。

我不确定如何控制正则表达式的位置?

我的想法类似于([1]+[01]*)+

示例:

  • 10101

  • 11111

2 个答案:

答案 0 :(得分:2)

您应该从内部删除该量词。此外,由于您要匹配0长度字符串,因此需要在完整正则表达式上使用*量词,而不是+

尝试使用以下正则表达式:

(1[01]?)*

这将匹配:

    首先
  • 1
  • 然后 0 1 排在第二位。
  • 重复0次以上,将使每个奇数位置都填充 1 ,偶数位置可以包含 0 1
  • [01]是可选的,用于匹配奇数长度的字符串。

答案 1 :(得分:1)

尝试使用:

String data = "10111";
        Pattern pattern = Pattern.compile("(1[01]?)*");

        Matcher matcher = pattern.matcher(data);
        while (matcher.find()) {
            // Indicates match is found. Do further processing
            System.out.println(matcher.group());
        }