1

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

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

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

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

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

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

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

4

3 回答 3

2

这是您必须使用的正则表达式

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

正则表达式图片

于 2013-06-09T08:03:09.480 回答
2

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

为此,您可以使用平衡组来计算开括号的数量。

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

(?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
    \)
)+
于 2013-06-09T08:11:54.833 回答
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)

于 2013-06-09T08:03:30.177 回答