すべてのリテラルをリテラルの形式で一致させたい( -- つまり、リテラルの後にスペースが続き、開き括弧が続く。ただし、リテラルが「hi」、「hello」、または「bye」のいずれかである場合、一致するべきではありません.
だから私は次の結果を探しています:
Literal :: Result
--------------------------------
Hello ( :: Match
There ( :: Match
hello ( :: Not Match
New ( :: Match
hi ( :: Not Match
私は先読み正規表現でそれをやろうとしています。だから私はのように置きます
(^|\s)(?!((hello|hi|bye)(\s\()))
しかし、そのすべてに一致します。
また、正規表現を使用しないため、後読みでは実行できません。
このタスクを実行するための正規表現はありますか?
アップデート
私はperlとcheckstyleを試して います (checkstyle がどのフレーバーを使用するかわかりません)。
先読みは両方に Match を与えています。
しかし、後読みでは、Perl は error を返しますVariable length lookbehind not implemented in regex m/(?<!(hello|hi|bye))\s\(/
が、checkstyle では望ましい結果が得られます。