gpt4 book ai didi

java - 关于奇怪的 Java 正则表达式行为的问题

转载 作者:行者123 更新时间:2023-12-02 08:31:00 27 4
gpt4 key购买 nike

我正在研究一个可以匹配前导数字和 .在一个字符串中。但它似乎无法正常工作。我正在使用的正则表达式是

"^[\\.\\d]+"

下面是我的代码:

public void testMiscellaneous() throws Exception {
System.out.println("~~~~~~~~~~~~~~~~~~~testMiscellaneous~~~~~~~~~~~~~~~~~~~~");
String s1 = ".123 *[DP7_Dog]";
String s2 = ".123";
String s3 = "1.12.3";
String s4 = "a1.12.3";
final String numberRegex = "^[\\.\\d]+";
System.out.println(s1.matches(numberRegex));
System.out.println(s2.matches(numberRegex));
System.out.println(s3.matches(numberRegex));
System.out.println(s4.matches(numberRegex));
}

输出是

false
true
true
false

但是,我希望是真,真,真,假。正则表达式肯定有问题,但我找不到它。有人可以帮忙吗?谢谢。

最佳答案

问题是 matches() 坚持匹配您的整个输入字符串,就好像您的正则表达式和 $< 开头有一个 ^ 一样 最后。

您可能最好使用 Matcher.find()Matcher.lookingAt(),或者(如果您想像我一样愚蠢和懒惰)简单地添加.* 位于模式末尾。

关于java - 关于奇怪的 Java 正则表达式行为的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364525/

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