分享
三行代码  ›  专栏  ›  技术社区  ›  Charul

为什么模式不返回true

  •  0
  • Charul  · 技术社区  · 1 周前

    1.从1开始

    例如101b

    或者

    1. 然后会有1个

    例如0b1000101

    Pattern patternForBin=Pattern.compile("(^(1)[0-1]*(b|B)$)");
    

    |

    Pattern patternForBin=Pattern.compile("(^(0b|B)1[0-1]*) | (^(1)[0-1]*(b|B)$)");
    

    为什么图案不匹配?

    2 回复  |  直到 1 周前
        1
  •  1
  •   User - Upvote don't say Thanks    1 周前

    从正则表达式的两侧删除空间 |

    Pattern patternForBin=Pattern.compile("(^(0b|B)1[0-1]*)|(^(1)[0-1]*(b|B)$)");
    

    完整代码:

    Pattern patternForBin=Pattern.compile("(^(0b|B)1[0-1]*)|(^(1)[0-1]*(b|B)$)");
    Matcher matcher = patternForBin.matcher("101b");
    boolean matchFound = matcher.find();
    System.out.println(matchFound);
    

    输出: true

        2
  •  2
  •   Ederic Oytas    1 周前

    有空格字符( ' ' )在正则表达式中。在regex中,空格不被忽略。正则表达式正在尝试匹配表达式中的空格,因此它不匹配。