2012-07-05 4 views
0
나는 그것이 예를 \begin{align}\end{align*} 일치해야하므로 ? 문자 숫자 식 또는 * 문자 수있는 문자열 \begin{?}\end{?}에서 일치 할 필요

. anything that's not } 여러 번 }과의 긴밀한 다음, 정규식이 시작 {?}와 끝 {?}

나는 그것을 시도하지만 난 \begin{

^\\begin{[^}]*}$ 

시작 뭐가 잘못 됐는지 모르겠어요.

\end{?}과 동일한 문제가 있지만 가능한 경우 단일 정규식에서 수행하고 싶습니다.

+0

중첩은 어떨까요? 중첩을 신경 쓰면 (예 :'\ ​​begin {foo} \ begin {foo} \ end {foo} \ end {foo}') 정규 표현식은 차선으로는 최적이 아닙니다. 아마도 이상적은 아니지만 더 합리적 일 것입니다. –

+0

예, 문자열 안에 중첩이 있지만 그 모든 것을 '(아무 것도) 대체하지 않아 문제가되지 않아야합니다 ... 아니면? – svenkapudija

답변

3

아래 정규식은 사용자가 필요로하는 것입니다.

\\(begin|end){[a-zA-Z0-9*]+}

+0

추가 요구 사항이 나타났습니다. 다른 {{SOME}} (중괄호) \ begin {array} {'{begin {array} {ll} '과 일치해야하므로 두 번째 중괄호는 선택 사항입니까? – svenkapudija

0

{}는 반복을 표현하는 데 사용되는 특수 문자이므로 이스케이프해야합니다.

^\\begin\{[^}]*\}$ 
+0

문자 클래스 내에서 "중괄호"를 이스케이프 할 필요가 없습니다. 이것은 잘못된 것입니다 . – Cylian

+0

죄송합니다. 오류가 수정되었습니다. 외부에서 여전히 이스케이프가 필요합니다. – Eelke

3

귀하의 정규식 :

\\(begin|end){.*?}

.*{ } 사이에 아무것도 사로 잡고, 첫 번째 }이 올 때 ? 수단이 중지됩니다.

+0

질문에서 알 수 있듯이 요구 사항은 영숫자이거나'{}'괄호 안에있는'*'에 대한 것입니다. 난 어떤 캐릭터 든 일치 해. –

+0

좋은 픽업, 나쁘다. @ VamanKulkarni가 완벽 해졌습니다. – jared

관련 문제