음 ... tintin 스크립트가 포함 된 파일이 있습니다. 이제는 Ruby를 사용하여 웹 사이트에서 적절하게 명령 된 것을 보여주기 위해 이미 모든 작업과 대체 작업을 잡아 냈습니다. 따라서 개요를 유지하는 데 도움이됩니다.Java에서 Ruby-regex 패턴을 작성하는 방법 (재귀 적 그룹핑 포함)?
예 틴틴 스크립트 나는 varibable '입력'으로 내 스크립트 파일을 읽고 다음 '입력'
를 스캔하려면 다음 패턴을 사용하여 내 루비 앱에서 그들을 잡아#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}
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
}
지금 내 생각은 단지 개요를 유지하지 할 수있는 모듈을 작성하는 넷빈즈 플랫폼을 사용할뿐만 아니라 틴틴 스크립트 파일을 편집을 지원하는 것이 었습니다. 그래서 Editor-Window에서 파일을 여는 동안 나는 틴틴 파일을 파싱해야하고 파일에서 '액션'과 '대체물'을 모두 가져 와서 eTable에 표시해야한다. 하나의 항목을 dbl- 클릭하여 열 수있다. 수정 창.
나는 설정을 모듈을했습니다 지금까지, 난 그냥 작동 자바 정규식 패턴에 작성한 루비 정규식 패턴을 번역하는 방법을 알아낼 수 없습니다 모든 준비를 얻었다. 명명 된 그룹 캡처로 보이고 특히 이러한 그룹의 재귀 적 응용 프로그램은 Java에서 지원되지 않습니다. 없이 그 내가이 작업 솔루션을 찾을 수 없습니다 것 같다 ... 여기
다시 루비 패턴의 ...pattern = /(?<braces>{([^{}]|\g<braces>)*}){0}^#(?<type>action|substitution)\s*(?<b1>\g<braces>)\s*(?<b2>\g<braces>)\s*(?<b3>\g<braces>)/im
사람이 일치하는 자바 패턴을 생성하는 데 도움이 수 같은? 팁/힌트/아이디어 특히 솔루션 또는 (근접에-솔루션 댓글) 사전에
많은 감사합니다!
그렇진 대답을하지만 오히려 어쨌든 작업의 종류에 대한 적절한 파서를 (예를 들어, [ANTLR] (http://www.antlr.org)) 사용합니다. – Slartibartfast