Skip to main content
 首页 » 编程设计

c#之正则表达式拆分 obj.method(obj.attr, obj.attr2)

2024年02月13日27oomusou

我正在寻找一个正则表达式来分割这种内容:

obj.method(obj.attr,obj.attr2) 

我希望拆分返回一个数组:

["obj", "method(obj.attr, obj.attr2)"] 

所以,我不能在“.”上拆分因为它还会拆分方法属性的内容。

我必须在“.”上拆分我认为只有当它们不在“(”和“)”之间时。

任何帮助将不胜感激,谢谢!

请您参考如下方法:

如果你真的想用正则表达式解决这个问题,最好用匹配而不是拆分。

为此你可以使用 balancing groups计算左括号的个数。

例如,您可以获取此表达式的所有匹配字符串,以获得所需的结果:

(?x)                    # allow comments and ignore spaces 
(?: 
    [^.()]+             # don't match . 
    | 
    \( 
    (?: 
        [^()]+          # in here . are allowed 
    |   (?<open> \( )   # open++ 
    |   (?<-open> \) )  # open-- (as long as open > 0) 
    )* 
    (?(open) (?!) )     # fail if open > 0 
    \) 
)+