2014-09-23 60 views
0

我有這個字符串正則表達式分裂與逗號而不是在方括號,而不是括號

StudentInfo[id] as stu_id, StudentInfo[ssn] as stu_ssn, verylong.library.path.ScoreInfo[min_points, max_points] as sinfo, left_join((id),(customer_id)), reference.dilino[(greed,greed)], reference.dilino2[dilino], reference.dilino3[reference.dilino4[(kaktus,kaktus2)],reference.dilino5[(kaktus3,kaktus4)]], reference.dilino6[reference.dilino4[(kaktus,kaktus2),dilino] 

,我想分裂這個

StudentInfo[id] as stu_id 
StudentInfo[ssn] as stu_ssn 
verylong.library.path.ScoreInfo[min_points, max_points] as sinfo 
left_join((id),(customer_id)) 
reference.dilino[(greed,greed)] 
reference.dilino2[dilino] 
reference.dilino3[reference.dilino4[(kaktus,kaktus2)] 
reference.dilino5[(kaktus3,kaktus4)]] 
reference.dilino6[reference.dilino4[(kaktus,kaktus2),dilino] 

我現在這個表達式

/,(?=[^\]]*(?:\[)|[^\)]*(?:\()|$)/gm 

但它不好:(你能幫我嗎?

+0

爲什麼要這樣做? – 2014-09-23 06:55:25

+0

這是在文件中,我必須解析爲陣列的UI – Kepro 2014-09-23 07:01:03

+0

此外,爲什麼你想分開在倒數第三和倒數第二倒數之間的逗號?看起來應該不會因爲嵌套括號而發生分裂。最後一項沒有正確的平衡括號。如果這真的是你的投入,那就是一團糟。 – 2014-09-23 07:01:14

回答

1
(?![^)(]*\([^)(]*?\)\)),(?![^\[]*\]) 

嘗試this.See演示。

http://regex101.com/r/lS5tT3/8

+0

謝謝!工程太棒了!我不能投票給我的名譽:( – Kepro 2014-09-23 07:13:33

+0

+1爲良好的工作正則表達式 – anubhava 2014-09-23 07:14:22

+3

-1:沒有解釋,更多的似乎「被黑」看看[it failing](http://regex101.com/r/lS5tT3/9)。提示:要做到這一點*正確*,你需要一個更強大的引擎,比如PCRE或.NET,你需要遞歸,因爲的嵌套性質 – HamZa 2014-09-23 07:20:57

相關問題