Im пытается получить следующий текстОтрицательный взгляд сзади нужен?
EDIT: второй $ ::/:: должен быть факультативным
when HTTP_REQUEST {
if { [matchclass ::USERAGENT contains $::XYZ ] or [matchclass $::USERAGENT contains $::ABC ] } { drop }
if { [matchclass $USERAGENT contains ::TEST ] } { drop }
if { [ matchclass $::useragent contains TEST ] } { drop }
return
}
посмотреть, как этот
when HTTP_REQUEST {
if { [matchclass ::USERAGENT contains XYZ ] or [matchclass $::USERAGENT contains ABC ] } { drop }
if { [matchclass $USERAGENT contains TEST ] } { drop }
if { [ matchclass $::useragent contains TEST ] } { drop }
return
}
т.е. удалить $::
или ::
от слова рядом с \]
До сих пор у меня есть регулярное выражение,
re.sub(' \$?::(?=.*\])', ' ', text)
Однако это производит,
when HTTP_REQUEST {
if { [matchclass USERAGENT contains XYZ ] or [matchclass USERAGENT contains ABC ] } { drop }
if { [matchclass $USERAGENT contains TEST ] } { drop }
if { [ matchclass useragent contains TEST ] } { drop }
return
}
Любые идеи? Также будет ли метод re использоваться для сопоставления, а не для замены. поиск/совпадение или поиск?
Ваше регулярное выражение соответствует всем '$ ::'/'::' в квадратных скобках из-за жадных '. *'. Вам нужно ограничить его совпадением только с последним '$ ::'. Кстати, я бы не стал искать здесь, потому что lookbehind намного дороже, чем взгляды. –
Кроме того, lookbehind проверяет известный контекст перед строкой, которую необходимо сопоставить. В вашем случае этот контекст неизвестен (судя по вашим другим комментариям). –
Ваш ответ выглядит великолепно, но при тестировании он не работал, когда отсутствовал второй $ ::/::. т. е. вместо этого он удалил первый. Вопрос обновлен – felix001