如何检测文本中的源代码?

时间:2010-07-05 12:28:22

标签: python

是否可以在文本中检测编程语言源代码(主要是Java和C#)?

例如,我想知道本文中是否有任何源代码部分。

.. text text text text text text text text text
text text text text text text text text text
text text text text text text text text text

public static Person createInstance() { return new Person();}

text text text text text text text text text
text text text text text text text text text
text text text text text text text text text ..

我一直在搜索这段时间,我找不到任何东西。

使用Python的解决方案非常棒。

问候。

2 个答案:

答案 0 :(得分:2)

周围有一些语法荧光笔(pygmentsgoogle-code-prettify),他们已经解决了代码检测和分类问题。研究他们的资料来源可以给人一种印象。

(现在我再次查看了pygments - 我不知道他们是否可以自动检测编程语言。但是google-code-prettify definitly可以做到这一点)

答案 1 :(得分:0)

您需要一个关键字数据库,其中包含这些关键字的特征(定义,控制结构等),以及操作符列表,将在整个语言结构中使用的特殊字符(例如{{1} },}*)和正则表达式列表。

减少迭代的最佳选择是搜索关键字/运算符/字符。使用空间/频率公式,仅根据返回的公式的值,从可能的文本开始。然后就确定它是什么语言以及结束的地方。

因为许多语言都有类似的代码,所以这可能很难。以下是哪种语言?

||

没有评论,它可能是许多不同类型的语言。通过评论,您至少可以抛出Perl,因为它使用for(i=0;i<10;i++){ // for loop } 作为注释字符,但它仍然可以是JavaScript,C / C ++等。

基本上,您需要执行大量递归查找以识别正确的代码,这意味着如果您想要快速的东西,您将需要一台计算机或计算机集群的野兽。此外,对于每种语言,搜索公式和识别公式都需要很好地完善。

没有正确的库调用或包含的代码识别可能是不可能的,除非列出它可能属于许多语言,你需要一个语法库。