以下のサンプルの最初の文字のみを一致させようとしています。
サンプル文字列:C/C++/Objective C/Objective-C/ObjectiveC/objectiveC
私の不完全な正規表現:(?![O|o]bjective[ |-]?)C(?!\+\+)
どー。
以下のサンプルの最初の文字のみを一致させようとしています。
サンプル文字列:C/C++/Objective C/Objective-C/ObjectiveC/objectiveC
私の不完全な正規表現:(?![O|o]bjective[ |-]?)C(?!\+\+)
どー。
これを試して:
(?<![Oo]bjective[ -]?)C(?!\+\+)
修正は次のとおりです。
(?<!
...)
ビット) の代わりに否定後読みを使用します。[
文字クラス ( ...]
ビット)からパイプ文字を削除しました。現在の正規表現は、などと一致するため、\b
の両側に のペアを追加することも価値があるかもしれません。C
Coconut
BBC
CFML
-
また、文字クラス内では、 が最初または最後の文字でない場合は特別であることも指摘する価値があります。このような状況でもエスケープすることを好む人もいます。つまり[ \-]
、後の文字が誤って後に追加された場合です。