用于匹配驼峰大小写字符串的许多组合的正则表达式模式

Regex pattern to match many combinations for a camel case string

我正在尝试创建一个正则表达式模式(一个或多个)。例如 SomeCamelStringToCombine 它应该匹配以下子字符串:

Some, Camel, String, To, Combine, SomeCamel, SomeCamelString,SomeCamelStringTo, SomeCamelStringToCombine, CamelString, CamelStringTo, CamelStringToCombine, StringTo, StringToCombine, ToCombine.

我设法创建了这个模式:/(?=([\p{Lu}]+[\p{L}]+))/,但它匹配

SomeCamelStringToCombine, CamelStringToCombine, StringToCombine, ToCombine, Combine.

我不知道是应该修改它还是创建额外的模式。问题是我不知道如何。我正在使用 Java 进行匹配。

我可以向你寻求帮助或提示吗?

您可以制作一个固定大小的正则表达式来查找最多 个单词组合。
下面使用 5 个单词的捕获,但您可以将其扩展到任何大小。

您可以轻松地以编程方式创建正则表达式。

只需从数组中排除 捕获组。

注意,第一次匹配后,还可以排除1-5组,避免
重复单打。

(?=([A-Z][a-z]+)([A-Z][a-z]+)([A-Z][a-z]+)?([A-Z][a-z]+)?([A-Z][a-z]+)?)(?=())(?=()?)(?=()?)(?=()?)

https://regex101.com/r/ta9Qzq/1

 (?=
      ( [A-Z] [a-z]+ )              # (1), required Word 1
      ( [A-Z] [a-z]+ )              # (2), required Word 2
      ( [A-Z] [a-z]+ )?             # (3), optional Word 3
      ( [A-Z] [a-z]+ )?             # (4), optional Word 4
      ( [A-Z] [a-z]+ )?             # (5), optional Word 5
 )
 (?=
      (   )                     # (6), required Word 1,2
 )
 (?=
      (   )?                    # (7), optional Word 1,2,3
 )
 (?=
      (   )?                    # (8), optional Word 1,2,3,4
 )
 (?=
      (   )?                    # (9), optional Word 1,2,3,4,5
 )
                             # Advance position by 1 word