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