3

すべてのリテラルをリテラルの形式で一致させたい( -- つまり、リテラルの後にスペースが続き、開き括弧が続く。ただし、リテラルが「hi」、「hello」、または「bye」のいずれかである場合、一致するべきではありません.

だから私は次の結果を探しています:

Literal     ::      Result
--------------------------------    
Hello (     ::      Match
There (     ::      Match
hello (     ::      Not Match
New (       ::      Match
hi (        ::      Not Match

私は先読み正規表現でそれをやろうとしています。だから私はのように置きます

(^|\s)(?!((hello|hi|bye)(\s\()))

しかし、そのすべてに一致します。

また、正規表現を使用しないため、後読みでは実行できません。

このタスクを実行するための正規表現はありますか?

アップデート

私はperlcheckstyleを試して います (checkstyle がどのフレーバーを使用するかわかりません)

先読みは両方に Match を与えています。
しかし、後読みでは、Perl は error を返しますVariable length lookbehind not implemented in regex m/(?<!(hello|hi|bye))\s\(/が、checkstyle では望ましい結果が得られます。

4

3 に答える 3