当字符串以数字开头,然后是一个点,然后是一个空格和一个或多个大写字符时,我需要匹配.匹配必须出现在字符串的开头.我有以下字符串.
1. PTYU fmmflksfkslfsm
Run Code Online (Sandbox Code Playgroud)
我试过的正则表达式是:
^\d+[.]\s{1}[A-Z]+
Run Code Online (Sandbox Code Playgroud)
它不匹配.对于这个问题,正则表达式是什么?
T.J*_*der 28
(对不起我之前的错误.大脑现在已经坚定了.呃,可能.)
这有效:
String rex = "^\\d+\\.\\s\\p{Lu}+.*";
System.out.println("1. PTYU fmmflksfkslfsm".matches(rex));
// true
System.out.println(". PTYU fmmflksfkslfsm".matches(rex));
// false, missing leading digit
System.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
Run Code Online (Sandbox Code Playgroud)
打破它:
^ =字符串的开头\d+=一个或多个数字(\由于它在字符串中而被转义,因此\\)\.=文字.(或你的原文[.]很好)(再次,在字符串中转义)\s=一个空白字符(不需要{1}它后面)(我现在不再提及转义了)\p{Lu}+=一个或多个大写字母(使用正确的Unicode转义 - 谢谢你,tchrist,在下面的评论中指出这一点.在英语术语中,相当于[A-Z]+).* =还有别的请参阅此处的文档了解详细信息
.*如果您使用的方法String#match(如上所述)将尝试匹配整个字符串,则只需要最后一个.
| 归档时间: |
|
| 查看次数: |
27606 次 |
| 最近记录: |