有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java语句中的每个单词都是大写字母

我正试图为我的任务编写一个正则表达式。 句子中的每个单词都以大写字母开头,其余的都是小写字母

(^[A-Z]{1}[a-z\s]+)+

例如

Java Test-好的

Java test-不正常

JaVa Test-不正常

java Test-不正常


共 (2) 个答案

  1. # 1 楼答案

    您尝试的模式也将匹配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+次
    • $字符串结尾

    Regex demo

    除了匹配单个空格,还可以使用\h(在java中\\h)匹配1+个水平空白字符

    Regex demo

  2. # 2 楼答案

    如果下列任何一个单词中可以有一个字符:

    This Is A Test
    I Am A Programmer
    

    然后你可以使用:

    ^(\b[A-Z][a-z]*\s?\b)+$
    

    演示和解释可以在here

    否则,如果每个单词中总是有多个字符,则可以使用:

    ^(\b[A-Z][a-z]+\s?\b)+$
    

    演示和解释可以在here找到