2016-10-14 2 views
0

여기 내 질문에 similiar 몇 가지 질문이 있지만 그것을 작동하지 못했습니다.여러 부정적인 lookbehinds와 정규식

내가 필요한 것은 각각 'WhatEver DataSet'과 일치하는 'WhatEver'부분을 캡처해야하는 정규식입니다.

그러나 경기는 점으로도 'ABC'

testdata로로 시작할 수 없습니다 :

IShouldMatchDataSet    // should match (entity = IShouldMatch) 
ABCIShouldNotMatchDataSet  // shoult not 
WhatEver.IShouldNotMatchDataSet // should not 
.ShouldNotDataSet    // should not 
DataSet       // should not 

이 내 현재 진행 상황입니다. 점 매칭은 작동하지만 ABC는 그렇지 않습니다.

(?<!ABC\w*)(?<!\.\w*)(?<entity>\w+)DataSet 

나는 참조 용으로 테스터로 RegexStorm을 사용하고 있습니다.

+0

왜'WhatEver.IShouldNotMatchDataSet'는'WhatEver.IShouldNotMatch' 일치하지 않습니다? 경기가 '.'로 시작하지 않습니다. 'ABC'로 시작하지도 않습니다. –

+0

@UlugbekUmirov 점을 포함 할 수 없습니다. 그래서 기본적으로 단어 - charachters 따라서 \ w. exaple 데이터는 일치 목록이 아니라 정규식이 첫 번째 행과 일치해야하는 텍스트입니다. – CSharpie

+0

이 정규식이 효과가 있습니까? '\ b (?

답변

0

하나의 방법 - 단어 구분이 ''이 아닌지 확인하십시오. 'ABC'가 나오지 않으면 휴식 후에 'DataSet'다음에 텍스트를 가져옵니다.

\b(?<!\.)(?!ABC)\w+(?=DataSet) 

RegexStorm Demo

관련 문제