我想匹配这种模式:[k1,v1] [k2,v2] ......
k1 ... kn cannont是空的,而v1 ... vn可以。
[k,v]可以超过1次。
我写了这个,但它不起作用:^(?=\[).+(?<!\]),.*(?<!\[)(?<=\])$
答案 0 :(得分:2)
答案 1 :(得分:0)
解决方案:@"^(?:\[[^,\]]+(?:,[^\]]+)?\])+$"
说明:
在字符串
的开头处断言位置^
匹配
下面的正则表达式(?:\[[^,\]]+(?:,[^\]]+)?\])+
在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)
+
匹配字符“[”字面意思
\[
匹配
下方列表中未出现的任何单个字符[^,\]]+
在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)
+
字面字符“,”
,
字面字符“]”
\]
匹配
下面的正则表达式(?:,[^\]]+)?
在零到一次之间,尽可能多次,根据需要回馈(贪婪)
?
匹配字符“,”
,
匹配任何不是“]”
的字符[^\]]+
在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)
+
匹配字符“]”字面上
\]
断言字符串末尾的位置,或字符串末尾的换行符之前的位置,如果有的话(换行符)
$