2014-10-10 3 views
1

내가 문자열과 같이 있습니다 : 어떤 괄호 밖에 만 "과의"를 일치시킬일치 단어

((blah blah AND) (blah AND blah) AND good) AND Zero AND (Blah AND Blah) 

, 즉 내가 사용하는 유일한 외부와의

정규식이었다 : AND (?!))

그리고 결과가되었다 :

는 여기 결과의 스크린 샷을 업로드하는 생각 하지만 그렇게하지 않으면 나를 허용하지 않습니다.

')'이 바로 따라 오는 AND와 일치하지 않지만 나머지 AND와 일치합니다.

다시 말하지만 정규식이 괄호 바깥에있는 AND, 즉 외부 AND와 일치하는 것이 이상적입니다.

Java에서이 구현하고 있고 regex 구현은 재귀 정규식을 지원하지 않습니다. 그 이유는 내가이 단조로운 해결 방법을 시도하고있다

나는 이것을 위해 더 튼튼한 해결책을 찾고있다.

+0

중첩 된 괄호를 지원하는 ANTLR과 같은 것을 사용하고자 할 수 있습니다. – PeterK

+0

'AND'와 일치시키는 목적은 무엇입니까? 그것을 다른 것으로 대체하려고합니까? – kums

+0

저는 AND의 바깥 쪽을 일치시키고 다른 것으로 바꾸기를 원합니다. – Karthik

답변

1

스택이 잘 작동합니다. 괄호를 계산하도록 변수를 설정하여 시뮬레이션 할 수 있습니다. 왼쪽 괄호 +1과 오른쪽 -1. AND를 찾고 괄호 개수가 0이면 모두 설정됩니다.

+0

그래, 그게 내가 결국 구현 한 일종의, 정확히는 아니지만. 나는 BODMAS 표현식 평가 알고리즘의 수정 된 버전을 사용하여 모든 것을 처리하고있다. 그것은 효과가있다! – Karthik