任何想法如何使用Java在文本文件中检测源代码(Java,C#,SQL等)而不查看文件扩展名或使用非常长的自制正则表达式?
也许有一些工具已经完成这项工作了吗?
答案 0 :(得分:3)
Linguist
我们在GitHub上使用这个库来检测blob语言,突出显示代码,忽略二进制文件,抑制差异中生成的文件并生成语言细分图。
不幸的是,它是用Ruby编写的,也许JRuby可以处理它?</ p>
答案 1 :(得分:1)
不,如果不使用语法分析器(几乎是正则表达式的复杂变体),就无法看到源代码文件和常规文本文件之间的区别。如果你考虑一下,源代码和文本之间的区别就像一个字母错字一样简单。
答案 2 :(得分:1)
您应该找到一些简约的关键字并定义一些逻辑规则。如果您定义了正确的规则,那么它们定义的正则表达式将不会非常大。请注意,您拥有的keywrod和规则越少,错误的概率就越大(SourceCode = true表示文件不是源代码,SourceCode = false表示文件是源代码)。此外,您拥有的关键字和规则越多,就需要更多时间来检查文件是否为源代码。
答案 3 :(得分:1)
有一个旧图书馆,http://sourceforge.net/projects/jmimemagic/尝试一下,我希望它能给出满意的结果。