我正在尝试构建regex以匹配-测试get:all-words:Test
可以从一个单词开始,然后是空格,然后是任何出现的单词:用空格分隔的单词。
@"^[a-zA-Z]+/s(^[a-zA-Z]+:^[a-zA-Z]+/s)*"
您在模式中添加了额外的字符串起始锚^
,您需要删除它们。
此外,空白空间模式必须写成s
,并且第一个s
必须在重复组内移动,该重复组应转换为非捕获组((?:...)
(以获得更好的性能。
你可以使用
^[a-zA-Z]+(?:s+[a-zA-Z]+:[a-zA-Z]+)*$
请参阅regex演示详细信息:
^
-字符串的开头[a-zA-Z]+
-一个或多个ASCII字母(?:s+[a-zA-Z]+:[a-zA-Z]+)*
-零次或多次重复s+
-一个或多个空白[a-zA-Z]+:[a-zA-Z]+
-一个或多个ASCII字母,:
,一个或更多ASCII字母
$
-字符串的末尾(或使用z
匹配字符串的末尾(
如果您想要允许任何单词字符(字母、数字、连接符标点符号(,则用w
替换每个[a-zA-Z]
。
如果只需要支持任何Unicode字母,请将每个[a-zA-Z]
替换为p{L}
。