В вашем шаблоне вы используете отрицательный класс символов [^OR|^AND]
, который не будет соответствовать ни одному из перечисленных символов, поэтому он будет соответствовать любому символу, кроме ADNOR|^
Если lookaheads и поддерживаются группы захвата , вы можете использовать комбинацию положительного взгляда, чтобы утверждать, что справа два слова, и утверждать, используя отрицательный взгляд, что то, что прямо справа, не является либо OR
, либо AND
.
Для сопоставления слов вы можете сопоставить символы слова, используя \w+
Ваше совпадение будет в первой группе захвата.
(?=(\b(?!(?:AND|OR)\b)\w+ (?!(?:AND|OR)\b)\w+\b))
Объяснение
(?=
Позитивный взгляд вперед, утверждают, что прямо справа есть (
Группа захвата 1 \b(?!(?:AND|OR)\b)
Граница слова и утверждение, что непосредственно направо не И / ИЛИ
\w+
Совпадение с 1+ символами слова, за которыми следует пробел (?!
Отрицательный взгляд вперед, утверждают, что находится прямо справане (?:AND|OR)\b)\w+\b
Совпадение И / ИЛИ, затем граница слова, 1+ символов слова и граница слова
)
Закрыть первую группу захвата
)
Закрыть позитивный прогноз
Regex demo