2012-02-21 149 views
-1

我有一個字符串,並希望將其分割成一個數組。關鍵字正則表達式分割

我不是一個正則表達式的大師,但我已經嘗試過 「\ S((?:?AND |和| NOT)\(* \))\ S」

字符串:

"free part AND(\"and part\") OR(or part) NOT(\"not part AND\") AND(another and) NOT(\"nospace\") AND(\"not(ugly part)\")" 

陣列:

"free part" 
"AND(\"and part\")" 
"OR(or part)" 
"NOT(\"not part AND\")" 
"AND(another and)" 
"NOT(\"nospace\")" 
"AND(\"not(ugly part)\")" 

It'a .NET C#程序。

+0

你想用什麼? sed,C,perl? – macduff 2012-02-21 16:17:51

+2

你忘了發佈你已經嘗試過的東西。 – 2012-02-21 16:17:58

+2

看來,也許某種解析器可能比正則表達式更適合這種情況。 – 2012-02-21 16:18:41

回答

1

也許沿着這條線? (我沒有測試過這一點)

正則表達式:

\s(?=(AND|OR|NOT)[^)]*) 

替換字符串:

"\n" 
+1

添加了非捕獲和它的工作\ s(?=(?: AND | OR | NOT)[^)] *?)。還修復了我的\\ s {1}((?: AND | OR | NOT)\(。*?\))\ s {0,1} – ostati 2012-02-21 17:02:29

+0

當我把AND,OR或NOT放在裏面時,RegEx會搞砸了:NOT (\「不和部分」)。有沒有解決的辦法? – ostati 2012-02-21 17:57:48

+0

這個正則表達式也應該覆蓋這些情況,它也更簡單:'\ s(?=(AND | OR | NOT)\()' – ale84 2012-02-21 18:45:01