Регулярное выражение для поиска конкретного реферера в заголовке HTTP

Многие ответы объяснили, как вызвать метод из родителя, который был переопределен в дочернем файле.

Однако

"как вы называете метод родительского класса из дочернего класса? "

также может означать только:

" как вы называете унаследованные методы? "

Вы можете вызывать методы, унаследованные от родительского класса, точно так же, как если бы они были методами дочернего класса, если они не были перезаписаны.

, например. в python 3:

class A():
  def bar(self, string):
    print("Hi, I'm bar, inherited from A"+string)

class B(A):
  def baz(self):
    self.bar(" - called by baz in B")

B().baz() # prints out "Hi, I'm bar, inherited from A - called by baz in B"

да, это может быть довольно очевидным, но я чувствую, что, не указывая на это, люди могут покинуть этот поток с впечатлением, что вам нужно перепрыгнуть через смешные обручи, чтобы получить доступ к унаследованным методам в python. Тем более, что этот вопрос высоко оценивает поиск «как получить доступ к методу родительского класса в Python», а OP написан с точки зрения кого-то нового для python.

Я нашел: https: //docs.python.org/3/tutorial/classes.html#inheritance, чтобы быть полезными для понимания того, как вы получаете доступ к унаследованным методам.

1
задан Adnan Ahmad 5 March 2019 в 11:34
поделиться

2 ответа

Вы можете использовать якорь ^, чтобы утверждать начало строки, и использовать отрицательный прогноз, чтобы утверждать, что справа не то, что вы хотите сопоставить.

Обратите внимание, что вам нужно экранировать точку, чтобы буквально соответствовать ей, и вы можете опустить последнюю часть (\/.*)?.

Если вы не используете группы захвата для последующего использования, вы также можете превратить их в группы без захвата (?:).

^(?!Referer:(https?(:\/\/))?(www\.)?test\.com).+$

regex101 demo

О шаблоне

  • ^ Начало строки
  • (?! Отрицательный взгляд чтобы утверждать, что справа не соответствует
    • Referer:(https?(:\/\/))?(www\.)?test\.com Соответствует вашему шаблону
  • ) Закрыть отрицательный прогноз
  • .+ Соответствовать любой символ кроме новой строки 1+ раз
  • $ Утверждать конец строки
0
ответ дан The fourth bird 5 March 2019 в 11:34
поделиться

Попробуйте это регулярное выражение:

^(?!.*Referer:(http(s)?(:\/\/))?(www\.)?test.com(\/.*)?).*$

Хороший способ отрицать свое регулярное выражение - использовать отрицательный взгляд.

Объяснение:

Конструкция с отрицательным прогнозом представляет собой пару круглых скобок, с открывающей скобкой, за которой следует знак вопроса и восклицательный знак Внутри lookahead [есть любой шаблон регулярных выражений].

Рабочий пример: https://regex101.com/r/QJfeBB/1

0
ответ дан Rahul Sharma 5 March 2019 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: