讓我試着回答:
這已給定的約束(無)內是不可能的。
如果您對期望哪種編程語言以及哪些其他非編程文本(語言,科學,街道語言)期望沒有限制,而且您也完全沒有分隔符,則無法區分這兩種語言。
問題是,有些編程語言可能看起來非常像普通文本 - 特別是如果樣本量很小。
如果您有一打行Tcl或Rebol您可以對數據進行統計分析。標點符號和特殊字符與普通文本的預期(低)值。如果代碼始終由新的段落或至少換行符與文本分隔開來,這尤其可行。
但即使如此,這真的很難。一個REBOL example:
REBOL [
Title: "REBOL/Services Simple Example"
Author: "Carl Sassenrath"
Version: 1.0.0
]
url: http://www.rebol.net/cgi-bin/services.r
print "Loading client..." ; Used until it is built-into REBOL
do http://www.rebol.net/rebservices/client.r
print "Sending command..."
result: do-service url [info]
print ["Result:" mold/only result]
ask "Done."
上面的段落非常看起來像腳註和URL引用科學的文字。
也許總是有一個<br>
或<p>
之前和之後在你的HTML代碼?
但是對於非常短的代碼片段,這樣的分析可能會失敗。你的html也可以包含非常接近編程語言的文本。比較數學公式或公式爲Lisp或R
x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
這樣的東西是如何上面從數學題目的論文有什麼不同?
所以你必須做出妥協。
一些方法進行:
- 限制檢測的編程語言的量(可能「隱藏的」那些使用大量的sepcial字符如Perl,和C(括號),或Python(縮進和冒號))
- 將標記添加到html或接受
<br>
或<p>
或甚至只是\n
是有效的分隔符。當然,該HTML包含<verbatim>
或其他標籤來分隔代碼?
然後做一些統計分析,對特殊字符的
- 用法,
- 改變壓痕的水平,
- 方差線的長度,在使用
- 金額的獨特單詞
- 重複單詞(命令和變量名稱可能會重複超過文本中的普通單詞)
- 語言標記(「該」在代碼中很少見,但經常在語言中使用)
來源
2015-10-28 10:19:50
cfi
@ hjpotter92這是我的問題。如果有一些用於識別編程代碼的Python庫... – RedVelvet
@ hjpotter92:他確實說過__沒有區別或標記_ – Gogo
什麼都不能識別一般語言 – hjpotter92