решение регулярных выражений, проблемы с доступом к ранее легкому для доступа 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 ответа:
Позиция игрока должна соответствовать этому регулярному выражению:
'^((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