решение регулярных выражений, проблемы с доступом к ранее легкому для доступа url статистики nba


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

Я пытаюсь получить доступ к URL-адресу, содержащему данные, которые я обычно соскребаю для анализа:

http://stats.nba.com/stats/shotchartdetail?CFID=33&CFPARAMS=2011-12&ContextFilter=&ContextMeasure=FGA&DateFrom=&DateTo=&GameID=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerID=0&PlusMinus=N&Position=&Rank=N&RookieYear=&Season=2011-12&SeasonSegment=&SeasonType=Regular+Season&TeamID=0&VsConference=&VsDivision=&mode=Advanced&showDetails=0&showShots=1&showZones=0

Как вы можете видеть в url, он имеет много полей для заполнения, и этот url, который ранее работал, теперь дает мне следующую ошибку:

The PlayerPosition property is required.

Поэтому я подумал, что, как и во многих других полях в URL, если я добавлю

&PlayerPosition=0

Это было бы используйте каждую позицию, поэтому я использовал этот url:

http://stats.nba.com/stats/shotchartdetail?CFID=33&CFPARAMS=2011-12&ContextFilter=&ContextMeasure=FGA&DateFrom=&DateTo=&GameID=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerID=0&PlusMinus=N&Position=&Rank=N&RookieYear=&Season=2011-12&SeasonSegment=&SeasonType=Regular+Season&TeamID=0&VsConference=&VsDivision=&mode=Advanced&showDetails=0&showShots=1&showZones=0&PlayerPosition=0

Но это дало мне следующую ошибку:

The field PlayerPosition must match the regular expression '^((Guard)|(Center)|(Forward))?$'.

Поэтому я попытался заменить &PlayerPosition=0 на:

&PlayerPosition=&PlayerPosition='^((Guard)|(Center)|(Forward))?$'

&PlayerPosition=&PlayerPosition= ^((Guard)|(Center)|(Forward))?$

&PlayerPosition=&PlayerPosition=((Guard)|(Center)|(Forward))?

&PlayerPosition=&PlayerPosition=((Guard)|(Center)|(Forward))
Но ничего не сработало, и это возвращает мне ту же ошибку, какие-нибудь предложения?
2 2

2 ответа:

Позиция игрока должна соответствовать этому регулярному выражению:

'^((Guard)|(Center)|(Forward))?$'

В ()? говорится, что все, что находится между скобками, является необязательным. Итак, (Guard)|(Center)|(Forward) является необязательным. он может быть пустым .

Означает, что все следующие значения являются допустимыми:

  • PlayerPosition=Guard
  • Положение Игрока=Центр
  • Положение Игрока=Вперед
  • PlayerPosition=

Я попробовал в браузере использовать его без чего-либо после него, и это сработало:

http://stats.nba.com/stats/shotchartdetail?CFID=33&CFPARAMS=2011-12&ContextFilter=&ContextMeasure=FGA&DateFrom=&DateTo=&GameID=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerID=0&PlusMinus=N&Position=&Rank=N&RookieYear=&Season=2011-12&SeasonSegment=&SeasonType=Regular+Season&TeamID=0&VsConference=&VsDivision=&mode=Advanced&showDetails=0&showShots=1&showZones=0&PlayerPosition=

Добавьте параметр PlayerPosition в строку url, где угодно. Но значение может быть только "охранник", или "центр", или "вперед".

Например

http://stats.nba.com/stats/shotchartdetail?CFID=33&CFPARAMS=2011-12
  &ContextFilter=&ContextMeasure=FGA&DateFrom=&DateTo=&GameID=&GameSegment=
  &LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0
  &OpponentTeamID=0&Outcome=&PaceAdjust=N&PerMode=PerGame
  &Period=0&PlayerID=0&PlusMinus=N&Position=&Rank=N&RookieYear=
  &Season=2011-12&SeasonSegment=&SeasonType=Regular+Season&TeamID=0
  &VsConference=&VsDivision=&mode=Advanced&showDetails=0&showShots=1
  &showZones=0
  &PlayerPosition=Guard