(对不起,我先前的错误。大脑现在坚定地投入了。嗯,也许。)
这有效:
String rex = "^\d+\.\s\p{Lu}+.*";System.out.println("1. PTYU fmmflksfkslfsm".matches(rex));// trueSystem.out.println(". PTYU fmmflksfkslfsm".matches(rex));// false, missing leading digitSystem.out.println("1.PTYU fmmflksfkslfsm".matches(rex));// false, missing space after .System.out.println("1. xPTYU fmmflksfkslfsm".matches(rex));// false, lower case letter before the upper case letters分解:
^
=字符串开头d+
=一个或多个数字 (之所以转义,是因为它在字符串中,因此\
).
=文字.
(或者您的原始文字[.]
很好) (再次在字符串中转义)s
=一个空格字符(不需要{1}后面的字符) (我现在不再提及转义 符 )p{Lu}+=一个或多个大写字母(使用正确的Unipre转义- 谢谢tchrist,在下面的注释中指出了这一点 。用英语来讲,等同于[A-Z]+
).*
=其他
有关详细信息,请参见此处的文档。
你只需要
.*如果你使用的方法一样,在年底
String#match(上图),将尝试将匹配 整个 字符串。



