Я знаю, что почти каждый вопрос о регулярных выражениях должен быть задан и получен ответ, но здесь я иду:
Я хочу, чтобы регулярное выражение соответствовало:
"alcohol abuse"
"etoh abuse"
"alcohol dependence"
"etoh dependence"
, но не совпадало
"denies alcohol dependence"
"denies smoking and etoh dependence"
"denies [anything at all] and etoh abuse"
Отрицательный взгляд позади очевиден, но как мне НЕ сопоставить последние два примера?
Пока мое регулярное выражение выглядит так:
re.compile("(?<!denies\s)(alcohol|etoh)\s*(abuse|dependence)")
Я не могувключите жадный оператор в отрицательный внешний вид, поскольку эта операция работает только со строкой фиксированной длины, которая должна быть оценена.
Я бы предпочел сделать это за один шаг, так как он передает функцию, которая принимает одно регулярное выражение в качестве параметра.
Спасибо за советы