正则表达式匹配qustion

时间:2015-06-29 04:21:53

标签: c# .net regex

我想匹配这种模式:[k1,v1] [k2,v2] ......

k1 ... kn cannont是空的,而v1 ... vn可以。

[k,v]可以超过1次。

我写了这个,但它不起作用:^(?=\[).+(?<!\]),.*(?<!\[)(?<=\])$

2 个答案:

答案 0 :(得分:2)

好像你想要这样的东西,

@"^(?:\[[^,\]]+(?:,[^\]]+)?\])+$"

DEMO

答案 1 :(得分:0)

解决方案:@"^(?:\[[^,\]]+(?:,[^\]]+)?\])+$"

说明:

  

在字符串^

的开头处断言位置      

匹配(?:\[[^,\]]+(?:,[^\]]+)?\])+

下面的正则表达式      
    

在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)+

         

匹配字符“[”字面意思\[

         

匹配[^,\]]+

下方列表中未出现的任何单个字符          
      

在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)+

             

字面字符“,”,

             

字面字符“]”\]

    
         

匹配(?:,[^\]]+)?

下面的正则表达式          
      

在零到一次之间,尽可能多次,根据需要回馈(贪婪)?

             

匹配字符“,”,

             

匹配任何不是“]”[^\]]+

的字符              
        

在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)+

      
    
         

匹配字符“]”字面上\]

  
     

断言字符串末尾的位置,或字符串末尾的换行符之前的位置,如果有的话(换行符)$