2016-10-14 4 views
0

私の問題と同じようにいくつか質問がありますが、私はそれを完全に動作させることができませんでした。複数のネガティブなヒアビハインドを持つ正規表現

私が必要とするのは、 'WhatEver'の部分をキャプチャする必要があるすべての 'WhatEver DataSet'と一致するキャプチャグループを持つ正規表現です。これは私の現在の進行状況です

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

しかし、試合はドットでも 'ABC'

TESTDATAで始めることはできません。ドットマッチングは機能しますが、ABCは機能しません。

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

私は参考のために、テスターとしてRegexStormを使用しています。

+0

なぜ 'WhatEver.IShouldNotMatchDataSet'は' WhatEver.IShouldNotMatch'試合を持っていませんか?マッチは「。」で始まらない「ABC」で始まらない場合もあります。 –

+0

@UlugbekUmirovドットを含むことはできません。だから、基本的に単語チャラーチャンスだけで\ w。 exapleデータは一致のリストではありませんが、正規表現が最初の行と一致するだけのテキストです。 – CSharpie

+0

この正規表現は使えますか? '\ b(?<!\。)(?! ABC)\ w +(?= DataSet)' –

答えて

0

これを実行する方法の1つは、 ''ではない単語区切りを探します。 「ABC」が続きない場合は、改行の後に「DataSet」というテキストが続きます。

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

RegexStorm Demo