2014-01-12 7 views
0

2 정규식으로 만든 정규식을 만드는 방법이 있습니까? 내 말은정규식, "두 개의 정규식 합"

, 나는 정규식을

(\bword\b) 

(!\\(\w*)(\[.*\])*(\{(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\bword\b(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\})+) 

첫 정규 표현식을 더한 두 번째 정규 표현식과 일치 할 수있는 방법이 있나요이? 즉, "word"단어 안에 "~ something {letters letters letters word letters letters}"안에없는 단어를 의미합니까?

+0

정규식 툴킷에 따라 다르지만 정규 언어 두 개가 일반 언어이므로 일반 언어보다 더 나은 언어를 사용할 수 있습니다. –

+0

자바를 사용하고 있습니다. 태그에 추가해야합니까? – user1722791

+0

어떻게 두 번째 정규 표현식과 일치하는 * * 첫 번째 정규 표현식과 일치하지 않을 수 있습니까? 교차로가 사소하지 않은 다른 예를 생각해 낼 수 있습니까? – tripleee

답변

0

나는 당신의 의도에 대해 확실하지 않다 당신의 표현을 분석 할 시간이 없어하지만 look-ahead 아마 \something{letters letters word letters letters}의 모든 word 외부 캡처 당신

(?=\bword\b)(!\\(\w*)(\[.*\])*(\{(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\bword\b(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\})+) 
+0

이 전혀 작동하지 않습니다 ... – user1722791

0

에 대한 답변입니다 :

(\bword\b)|(?:\\(?:\w*)(?:\[.*\])*(?:\{(?:\w|\s|\\|\.|\{.\}|`|\-|\:|\/|')*\bword\b(?:\w|\s|\\|\.|\{.\}|`|\-|\:|\/|')*\})+) 

Demo @ regex101

OR과 두 번째 표현식에서 모든 캡처 그룹을 캡처하지 않는 그룹으로 만들었으므로 word 만 캡처합니다. 당신의 설명에 따르면

+0

"|"가 "or"입니까? 왜냐하면 다른 정규 표현식 편집기에서 \ something {}의 안팎에서 두 단어를 취했기 때문입니다. – user1722791

+0

'|'는'or'을 의미합니다. 이미 두 번째 정규식에서 너무 많이 사용했습니다. 두 번째 expresison에서 모든 캡쳐 그룹 ('()')을 캡쳐되지 않은 그룹 ('(? :)')으로 바꾼 점에 유의하십시오. 이 방법을 사용하면 구조 외부에서'단어 '만 캡처 할 수 있지만 여전히 전체 문자열과 일치합니다 (일치 및 캡처 사이에는 차이가 있음). –

0

는 : 모든 "단어"는 내부에, 나는 그것이 간단해야한다고 생각 "\ 뭔가 {문자 문자 단어 문자 문자}"아니다 단어로 :

\bword\b(?!.*}) 

이 솔루션은 대괄호 {}이 균형을 유지한다고 가정합니다.