【发布时间】:2020-03-29 14:03:18
【问题描述】:
我正在尝试为我的任务编写一个正则表达式。 句子中的每个单词都以大写字母开头,其余为小写字母。
(^[A-Z]{1}[a-z\s]+)+
例如
Java Test - 好的
Java test - 不行
JaVa Test - 不行
java Test - 不行
【问题讨论】:
我正在尝试为我的任务编写一个正则表达式。 句子中的每个单词都以大写字母开头,其余为小写字母。
(^[A-Z]{1}[a-z\s]+)+
例如
Java Test - 好的
Java test - 不行
JaVa Test - 不行
java Test - 不行
【问题讨论】:
您尝试的模式也将匹配 Java test,因为字符类 [a-z\s]+ 重复列出的任何内容(包括空格)超过 1 次,并且不会强制第二个单词以大写字符开头。
您可以在每次迭代中重复匹配大写字符的部分,后跟 1+ 个小写字符。
请注意,\s 也会匹配换行符,您可以省略 {1}
^[A-Z][a-z]+(?: [A-Z][a-z]+)*$
^ 字符串开始[A-Z][a-z]+ 匹配 1 个大写字母 A-Z 和 1+ 个小写字母 a-z(?:非捕获组
[A-Z][a-z]+ 匹配一个空格,1 个大写字母 A-Z 和 1+ 个小写字符 a-z )*关闭非捕获组并重复1次以上$字符串结束除了匹配单个空格,您还可以使用 \h 匹配 1+ 个水平空白字符(在 java 中 \\h)
【讨论】: