Ваш шаблон (return DS_)|(return Status)&(^!return DS_TRUE)
содержит 3 группы захвата.
Первая группа соответствует return DS_
, вторая группа соответствует return Status
с последующим сопоставлением с амперсандом.
Третья группа использует якорь ^
для подтверждения начала строки с последующим соответствием !return DS_TRUE
.
Вы можете использовать отрицательный прогноз после возврата, чтобы утверждать, что справа не DS_TRUE.
\breturn (?!DS_TRUE).*
Regex demo
Если вы хотите найти соответствие с начала строки, вы можете также использовать якорь ^
вместо границы слова \b
.
Если вы хотите совпадать только в том случае, если оно начинается с DS_
, а затем со всеми последующими или только статусами, вы можете использовать:
\breturn (?!DS_TRUE)(?:DS_.*|Status)
\breturn[ ]
Граница слова, возврат совпадения, за которым следует пробел (отмечен [ ]
только для ясности)
(?!DS_TRUE)
Отрицательный взгляд, утверждаю, что прямо справа не DS_TRUE
(?:
Группа без захвата
DS_.*
Соответствует DS_, за которым следуют 0+ символов, кроме новой строки
|
или
Status
Статус матча
)
Закрыть группу без захвата
Regex demo | Python demo