拆分obj.method的正则表达式(obj.attr,obj.attr2)

时间:2013-06-09 07:52:53

标签: c# regex

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

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

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

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

所以,我不能分开“。”因为它也会拆分方法属性的内容。

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

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

3 个答案:

答案 0 :(得分:2)

这是您必须使用的RegEx

(\w+)\.(\w+\([^)]*\))

Regular expression image

答案 1 :(得分:2)

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

为此,您可以使用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
    \)
)+

答案 2 :(得分:0)

试试这个:

        string objAttr = "obj.method(obj.attr,obj.attr2)";

        var res = objAttr.Split('.');
        var obj = res[0];
        var methodCall = String.Join(".", res.Skip(1));

输出:

  

OBJ
  方法(obj.attr,obj.attr2)