Java正则表达式模式大写

时间:2016-12-03 17:09:53

标签: java regex

我想匹配由至少3个字符组成的字符串“A SENTENCE OF UPPER CASE” 我试过了

[A-Z\s]+{3,}

但它也匹配像“A”“AB”

这样的字符串

2 个答案:

答案 0 :(得分:1)

您不需要+,这意味着" 1或更多"当你还要{3, }表示" 3或更多"。这会使RegEx引擎混淆,可能是你的问题。

正则表达式应为[A-Z\s]{3,}

答案 1 :(得分:0)

  

我想匹配字符串" A SENTENCE OF UPPER CASE"由至少3个字符组成

使用\s的代码我假设你也想忽略它们之间的空格。所以,这似乎是你正在寻找的正则表达式:

([A-Z]\s*){3,}

请记住从生成的捕获组中捕获group 0(所有匹配项)。另外,在此在线正则表达式引擎上按照您的意愿进行测试:

  1. https://regex101.com/r/F29oFj/1
  2.   

    但它也匹配" A"等字符串。 " AB"

    这没有意义,因为你的正则表达式[A-Z\s]+{3,}被破坏了,因为+运算符不能用{3,}运算符限定,即它甚至不应该编译,所以我这样做没有看到Java正则表达式引擎如何生成这些匹配。