java - matches() 匹配Java中必须以大写字母开头的单词

标签 java regex string

所以,我一直在使用 Java 中的“matches()”方法……如下所示:

Str1 = 'Jane';
Str1.matches("[A-Z][a-zA-Z]*");

判断一个字符串是否以大写字母开头,后跟任意数量的大小写字母。我似乎可以弄清楚所有的配置,除非我试图匹配未知数量的单词。例如,如果我想确认一个字符串仅由字母和空格组成,其中每个单词都以大写字母开头。我在想可以做

Str2 = 'Jane Marie Doe';
Str2.matches("[A-Z][a-zA-Z\\s]*");

就像大写字母后跟任意数量的空格、大写字母和小写字母一样,但这不会强制执行每个空格后都必须跟大写字母的规则。我是否需要标记化(不确定这是否是正确的词)或使用空格作为分隔符拆分我的字符串,然后评估每个词?或者有没有办法将它输入到 matches 方法中,有点像 ([A-Z][a-zA-Z]\\s)* 其中星号表示括号中整个条目的任意数量?虽然在我打字的时候我在想这甚至在概念上都行不通,因为最后一个词后面没有空格。也许 ([A-Z][a-zA-Z]\\s?)* 会起作用?但是,事实并非如此。有什么东西可以吗?

我确实看到还有其他一些问题可以解决这个问题,但我似乎找不到明确的工作答案。

最佳答案

试试这个:

([A-Z][a-zA-Z]*\s*)+

单个大写字母,后跟任意数量的其他字母,后跟任意数量的空格,重复任意次数。

根据您的情况,您可能还想添加合法的标点符号,例如连字符等。

所以,像这样:

([A-Z][a-zA-Z\-\']*\s*)*

关于java - matches() 匹配Java中必须以大写字母开头的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13593742/

相关文章:

java - BufferSize 在 android AudioRecord 中减少

java - 当字符串被 (a-z) 包围时,从字符串中删除破折号,但不要从中间删除破折号

c# - 使用 C# .Net 可被 60 整除的任何数字的正则表达式?

java - java中如何读取字符串中的特殊字符

java - Firebase (Android) - 将过滤后的数据加载到自定义 ArrayList 中

java - 找不到 HTTP 请求的映射 Spring Security

python - 弦乐变奏

c# - 随机字符串生成 - 一个接一个生成的两个字符串给出相同的结果

java - 单元测试 OSGI 包

javascript - 需要帮助正确转义正则表达式 javascript