用于匹配驼峰大小写字符串的许多组合的正则表达式模式
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
我正在尝试创建一个正则表达式模式(一个或多个)。例如 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