呃...我有一個包含丁丁腳本的文件。現在我已經設法抓住所有操作和替換,以便使用Ruby在網站上正確顯示它們,這有助於我進行概述。如何在Java中編寫Ruby-regex模式(包括遞歸命名分組)?
例丁丁腳本
#substitution {You tell {([a-zA-Z,\-\ ]*)}, %*$}
{<279>[<269> $sysdate[1]<279>, <269>$systime<279> |<219> Tell <279>] <269>to <219>%2<279> : <219>%3}
{4}
#substitution {{([a-zA-Z,\-\ ]*)} tells you, %*$}
{<279>[<269> $sysdate[1]<279>, <269>$systime<279> |<119> Tell <279>] <269>from <119>%2<279> : <119>%3}
{2}
#action {Your muscles suddenly relax, and your nimbleness is gone.}
{
#if {$sw_keepaon}
{
aon;
};
} {5}
#action {xxxxx}
{
#if {$sw_keepfamiliar}
{
familiar $familiar;
};
} {5}
搶他們在我的Ruby應用程序內,我讀我的腳本文件到一個varibable「輸入」,然後使用下面的模式來掃描「輸入」
pattern = /(?<braces>{([^{}]|\g<braces>)*}){0}^#(?<type>action|substitution)\s*(?<b1>\g<braces>)\s*(?<b2>\g<braces>)\s*(?<b3>\g<braces>)/im
input = ""
File.open("/home/igambin/lmud/lmud.tt") { |file| input = file.read }
input.scan(pattern) { |prio, type, pattern, code|
## here i usually create objects, but for simplicity only output now
puts "Type : #{type}"
puts "Pattern : #{pattern}"
puts "Priority: #{prio}"
puts "Code :\n#{code}"
puts
}
現在我的想法是使用NetBeans平臺上寫一個模塊,不僅保持良好的概貌也協助編輯丁丁腳本文件。因此,在編輯器窗口中打開文件,我仍然需要解析tintin文件,並從文件中抓取並顯示所有「操作」和「替換」,以便我可以通過dbl單擊打開一個項目一個修改窗口。
我設置的模塊,並把一切都準備好,到目前爲止,我只是無法弄清楚如何翻譯我寫來運行一個Java正則表達式模式紅寶石正則表達式。似乎命名組捕獲,尤其是Java中不支持這些組的遞歸應用程序。如果沒有我似乎無法找到一個有效的解決方案......
這裏再次紅寶石圖案...
pattern = /(?<braces>{([^{}]|\g<braces>)*}){0}^#(?<type>action|substitution)\s*(?<b1>\g<braces>)\s*(?<b2>\g<braces>)\s*(?<b3>\g<braces>)/im
誰能幫我創建相匹配的一個java模式相同?
提前非常感謝提示/提示/想法,特別是對解決方案或(近於解決方案的意見)!
不太回答你的問題,但我寧願使用這種任務的合適解析器(比如,[ANTLR(http://www.antlr.org))反正。 – Slartibartfast