有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java正则表达式匹配零次或一次

我在Java中玩Regex,我想匹配一个零或一次出现点.的字符串。所以我希望任何带单点或无点的字符串返回true,而带两个或更多点的字符串返回false

根据Java文档:

X? X, once or not at all

因此,我有以下几点:

String str = "abc.def";
System.out.println(str.matches(".?"));

我本以为str会匹配.零次或一次,但它会打印false

我误解了?的意思了吗?我该怎么做才能使它只匹配零次或一次


共 (1) 个答案

  1. # 1 楼答案

    正确的模式是:

    ^[^.]*\\.?[^.]*$
    

    首先是任意数量的非点字符,然后可选地是一个点,后跟任意数量的非点字符