我正在使用Java中的Regex,我想匹配一个出现0或1个点的字符串..所以我希望任何带有单点或无点的字符串都返回true,带有2个或更多点的字符串返回false.
根据Java Docs:
X?X,曾经或根本没有
所以我有以下内容:
String str = "abc.def";
System.out.println(str.matches(".?"));
Run Code Online (Sandbox Code Playgroud)
我期待str匹配.0或1次,但它打印false.
我的问题:我错过了解释的含义?吗?我该怎么做才能让它匹配0或1次?
正确的模式是:
^[^.]*\\.?[^.]*$
Run Code Online (Sandbox Code Playgroud)
首先是任何不是点的字符数,然后可选地一个点后跟任何不是点的字符数.