2016-05-05 11 views
4

私が欲しいと仮定:正規表現はすべて一致しませんか?

TESTGRID - NOT MATCH 
testgrid - NOT MATCH 
ACTIVEID - MATCH 
activeID - MATCH 
testRID - MATCH 

私が試した:

(?!([^GR]))ID*?\b (I really thought I had it with this one - Don't match ID if it is preceeded with GR, right? 
(?!([^GRID]))ID*?\b 
(?!([GRID]))ID*?\b 

いずれも取り組んでいます。

私はSOからの助けを求めることなく、最後の6つの試みをノックアウトするために管理してきましたが、私は再び立ち往生しています:)かかわら:(

+0

あなたは '(?<!GR)ID \ b'を意味しましたか?または、* string */* word *全体を一致させる必要がありますか? '\ w *(?<!GR)ID \ b'のように? –

+0

Wiktor、それはそれをしました。 (?<!GR)は私が逃したものです。私は[^ GR] ID *?\ bを試しましたが、あなたが想像しているように、testRIDは一致しませんでした。私は、文字列のグループ化の構文が間違っていた、それが表示されます。ありがとうございました! – John

答えて

3

ドンを、私は、正規表現で良くなってる誓います「がtはそれがGR

で先行している場合は、単語の末尾にある、とGRで先行していないIDと一致することを意味している場合、IDと一致する使用

(?<!GR)ID\b 

(?<!GR)が後読みパターン文字列内の現在の位置の左側に一致が見つかった場合、一致に失敗負後読みあることthis regex demo

注を参照してください。 [^GR]、ネゲートされた文字クラスを使用する場合は、シーケンスではなく、単一のシンボル/文字(およびR以外の文字)がチェックされます。

+0

この場合、IDの末尾にIDを付けるだけです。私は近くにいて、あなたは私のエラーを指摘しました。ありがとうございました:)私は8分後に笑います。 – John

+0

無関係な部分を削除し、デモリンクを追加しました。 –

関連する問題