2014-02-26 29 views
2

我有一個國際象棋遊戲的PGN(便攜式遊戲符號)。我想要的只是獲得一系列舉措。例如:從PGN獲取移動列表

PGN:

1. e4 e5 2. f4 exf4 3. Nf3 d5 4. exd5 Nf6 5. Nc3 Nxd5 6. Nxd5 Qxd5 7. d4 Bg4 8. 
Bxf4 Nc6 9. Be2 O-O-O 10. c3 Qe4 11. Qd2 Rxd4 12. Nxd4 Nxd4 13. cxd4 Bb4 14. 
Kf2 Bxd2 15. Bxg4+ f5 16. Bxd2 fxg4 17. Rhe1 Qxd4+ 18. Be3 Qxb2+ 19. Kf1 Re8 
0-1 

輸出:

['e4','e5','f4','exf4','Nf3','d5', .... , 'Re8'] 

我的想法是把串,並在空格分開,然後安排一個新的陣列方式,但我不知道是否有更好的方法來做到這一點。沒有特定的語言我只是一般感興趣。可能是python,javascript,並不重要。

另外,PGN有時會在字符串中加上符號或「括號」中的「變體」,我想忽略它們。有任何想法嗎? 謝謝

+3

你需要一個PGN解析器。有許多可以用作學習資源的存在。甚至有可能是一個規範。請使用這些資源來學習。 –

回答

1

奇怪的是,我找不到好的PGN解析器的Ruby或Javascript。下面是我簡單測試了其他兩個庫:

也許這是真的是自己編寫解析器的最好方法。您可以使用正則表達式消除註釋,因爲它們不是嵌套的。

(來自Wikipedia) 註釋由「;」或「 (一直持續到該行末尾的評論)或「{」(持續到匹配的「}」)。評論不嵌套。

評論(包括變體)消失後,您可以按照您的意圖解析這些移動(分割空白並過濾移動數字)。