2012-02-21 2 views
-1

문자열이있어 배열로 분할하려고합니다.키워드에서 정규식 분할

난 정규식 전문가가 아니에요,하지만 난 이미 시도했습니다 "\ S ((:?.? AND | OR (| \ NOT) * \)) \의"

문자열 :

"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

+2

이미 시도한 것을 게시하는 것을 잊었습니다. –

+2

아마도 정규 표현식보다 일종의 파서가 더 적합 할 수 있습니다. –

답변

1

어쩌면이 줄을 따라 뭔가?

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

대체 문자열 :

"\n" 
+1

캡쳐되지 않은 캡쳐를 추가하면 \ s (? = (? : AND | OR | NOT) [*]] *?). 또한 고정 광산 \ s {1} (? : AND | OR | NOT) \ (. *? \)) \ s {0,1} – ostati

+0

RegEx는 AND, OR 또는 NOT을 다음과 같이 넣으면 엉망이됩니다. NOT (\ "not AND part \"). 이 문제를 해결할 방법이 있습니까? – ostati

+0

이 정규식은 이러한 경우도 포함해야하며 더 간단합니다. '\ s (? = (AND | OR NOT) \()' – ale84