2009-12-16 53 views
5

我做了一些搜索,但沒有登陸任何看起來有用的東西,但我想知道是否有人知道可以解析英語短語並將它們轉換爲cron字符串的東西(工具,lib等)。如何將英語轉換爲Cron?

例如:Every Tuesday at 15:00轉換爲0 15 * * 2

看來喜歡的事,會有很多陷阱的,這將是最好從別人的工作中受益。你可以在幾個不錯的網站/應用程序中看到它,它可以從簡單的短語中找出你的意思,而不是有一些可怕的用戶界面。

在此先感謝。

+0

這聽起來像你正在尋找一個現有的程序,使這一個ServerFault的問題,而不是一個編程問題。 – 2009-12-16 08:31:56

+0

不支持「nlp」,「parser」和「parse」等標籤。絕對是一個編程問題。 – Thomas 2009-12-16 08:35:01

+0

工具,庫,框架 - 我不挑剔。對於後臺,我希望它爲cron生成cron字符串,並最終生成Quartz。 – 2009-12-16 08:45:51

回答

2

對於Ruby,有"Whenever"這可能會提供一個起點:它將準英語(實際上它是有效的Ruby)轉換爲cron字符串。

+0

從您的文章我的靈感來自每當並做了一個小小的PHP庫:https://github.com/bpolaszek/natural-cron-expression – user4994579 2016-05-06 10:42:45

1

根據你需要的靈活性以及你願意捲起自己的袖子,你可以爲此定義一個簡單的語法。

每個將是一個量詞。你可能需要別人,但我想不出來。有效語法可能是:

(天-SPEC)AT(時間)

天規格可能是字面一天(即週一)或成爲本月的一天(即第30天)或其他一些語法(我建議fortnights,但我不確定Cron是否可以很好地表示這些)。

時間可使用任一24小時(16:00)或12小時值(下午4:00)格式指定。

,你可能想別的語法是: (頻率)(時間),其中頻率基本上是(數量)(單位)(即10分鐘。 )。從時間起,您可以設置偏移量(例如:每30分鐘從上午01:10起)。

你可能需要坐下來弄清楚這些細節。但是使用recursive descent可以相對容易地執行嚴格的語法。

+0

爲此定義一個語法將會在上面。這個語法沒有任何遞歸。製造一臺小型州機器是最快的路線 – Toad 2009-12-16 08:53:42

+1

@reinier如果沒有「如何打破核桃」的「自己的錘子」,這不會是如此嗎?題。 :) – 2009-12-16 08:57:12

0

嗯,關於那些陷阱...如何也寫一個翻譯cron參數英語?這樣你就可以看到解析器是否「理解」你。

+0

我看到很多東西,翻譯cron英語,同時搜索,並有同樣的想法。很明顯,你不會總是從另一端獲得相同的英語,因爲從英語到cron是多對一的。還是一個不錯的主意。反而讓我想起使用谷歌翻譯將短語翻譯成和來自外語的樂趣。 – 2009-12-16 09:05:49