gpt4 book ai didi

java - matcher.find() 返回 false 而它应该返回 true

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:57 27 4
gpt4 key购买 nike

我必须使用 regex 解析以下类型的字符串:

(alphanumeric word having 3 letters)(hyphen)(alphabetical word having 2 letters)(hyphen)(digits[minimum 1 digit])

我为此编写了以下代码:

Pattern p = Pattern.compile("/([A-Z0-9]){1,3}(-)([A-Z]){2}(-)([0-9]){1,}/");
Matcher m = p.matcher("AB3-EF-52825");
System.out.println("matched or not>"+m.find());

我使用 http://regexr.com/ 制作了正则表达式. enter image description here

理想情况下,m.find() 应该打印 true,因为字符串足以满足正则表达式的要求,但有些情况下它的打印方式是 false。我不明白是什么问题!!谢谢!

最佳答案

围绕您的 Pattern 的正斜杠被解释为文字斜杠。

删除那些。

此外,永远不要相信在线网站,使用 Java 进行测试和调试。

您的工作模式:

Pattern p = Pattern.compile("([A-Z0-9]){1,3}(-)([A-Z]){2}(-)([0-9]){1,}");

注意

括号中的每一项都分配了一个组,用于反向引用。

如果您不检索它们的反向引用,您可能不需要对所有项目进行分组:

Pattern p = Pattern.compile("[A-Z0-9]{1,3}-[A-Z]{2}-[0-9]{1,}");

关于java - matcher.find() 返回 false 而它应该返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com