Лучшая свободная библиотека или база данных, чтобы определить, является ли дата американским или международным праздником?

Я предполагаю (частично из-за примера в вопросе), что совпадения должны исключать строки, начинающиеся с «{{» и заканчивающиеся «}}», содержащие «|», которые также содержат «{{». Например, ни

"{{ a | {{ b }}"

, ни

"{{ a | {{ b }} c }}"

не должны совпадать. Если они должны быть сопоставлены, можно использовать регулярное выражение, предложенное @ WiktorStribiżew в комментарии к вопросу.

Вы можете получить желаемые соответствия следующим образом.

str = "Testing some text {{ first_name | mask }} and another {{ city }} " +
      "and again {{ state | mask_trail }}"

R = /
    {{         # match '{{'
    ((?!{{).)  # match one character not preceded by '{{'. Save in capture group 1
    *          # perform capture to group 1 zero or more times 
    \|         # match '|'
    \g<1>      # execute subroutine defined by capture group 1
    *          # perform preceding match zero or more times
    }}         # match '}}'
    /x         # free-spacing regex definition mode

или, кратко,

R = /{{((?!{{).)*\|\g<1>*}}/

str.gsub(R).to_a
  #=> ["{{ first_name | mask }}", "{{ state | mask_trail }}"]

Я не могу использовать String # scan , потому что Я не хотел возвращать содержимое группы захвата. Поэтому я использовал String # gsub без блока, чтобы вернуть перечислитель, который генерирует совпадения, а затем преобразовал его в массив совпадений. Здесь - обсуждение подпрограмм регулярного выражения или подвыражений.

Я позаимствовал (?!{{). из ответа @ Пушпеша.

6
задан MSalters 10 April 2009 в 10:52
поделиться

2 ответа

В мире Java сайт, который вы упомянули, действительно компортирует API, Instant Holiday Connection , который мог бы стать хорошим решением (лучше, чем очистка экрана).

API-интерфейс Light Development Holiday Client - это библиотека классов Java, позволяющая беспрепятственно интегрировать произвольные другие приложения с World Calendar Calendar Service , чтобы они знали о специальных днях наблюдений по всему миру.

Тем не менее, бесплатная версия предоставляет доступ только к прошлогодним праздникам ...


Другой (более общедоступной) базой данных будет Календарь Земли , бесплатный, но без видимого API (снова на экранные скриншоты) )


time and date.com , похоже, также имеет все праздники для всех стран (опять же без видимого API).

У них есть полный список праздников , хотя

4
ответ дан 17 December 2019 в 04:52
поделиться

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

1
ответ дан 17 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

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