0

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

我不确定如何使用正则表达式控制职位?

我的想法是这样的([1]+[01]*)+

样本:

  • 10101

  • 11111

4

2 回答 2

2

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

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

(1[01]?)*

这将匹配:

  • 1第一名
  • 然后01在第二位。
  • 0 次或多次重复,将使每个奇数位置填充1,偶数位置可以包含01
  • [01]是可选的以匹配奇数长度的字符串。
于 2013-08-04T07:27:14.667 回答
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());
        }
于 2013-08-04T07:30:35.347 回答