我正在寻找一个正则表达式来分割这种内容:
obj.method(obj.attr,obj.attr2)
我希望拆分返回一个数组:
["obj", "method(obj.attr, obj.attr2)"]
所以,我不能分开“。”因为它也会拆分方法属性的内容。
我必须分开“。”只有当它们不在“(”和“)”之间时我认为。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:2)
这是您必须使用的RegEx
(\w+)\.(\w+\([^)]*\))
答案 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)