2015-10-28 51 views
0

我有HTML文本和編程代碼(通用),沒有任何區別或標記。有一種方法可以爲代碼的開始和結束添加標記,適合任何編程代碼?在整個文本中查找編程代碼的開始和結束

例如:

start message 

Hello this is an example 

int main(){ 
char word1[21],word2[21]; 
int first; 
printf("Type in the first word (maximum 20 characters):\n"); 
scanf("%20s",word1); 

other text 

ends 

我想獲得:

Hello this is an example 

''' 

int main(){ 
char word1[21],word2[21]; 
int first; 
printf("Type in the first word (maximum 20 characters):\n"); 
scanf("%20s",word1); 

''' 

other text 
+0

@ hjpotter92這是我的問題。如果有一些用於識別編程代碼的Python庫... – RedVelvet

+2

@ hjpotter92:他確實說過__沒有區別或標記_ – Gogo

+4

什麼都不能識別一般語言 – hjpotter92

回答

2

讓我試着回答:

這已給定的約束(無)內是不可能的。

如果您對期望哪種編程語言以及哪些其他非編程文本(語言,科學,街道語言)期望沒有限制,而且您也完全沒有分隔符,則無法區分這兩種語言。

問題是,有些編程語言可能看起來非常像普通文本 - 特別是如果樣本量很小。

如果您有一打行TclRebol您可以對數據進行統計分析。標點符號和特殊字符與普通文本的預期(低)值。如果代碼始終由新的段落或至少換行符與文本分隔開來,這尤其可行。

但即使如此,這真的很難。一個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也可以包含非常接近編程語言的文本。比較數學公式或公式爲LispR

x <- c(10.4, 5.6, 3.1, 6.4, 21.7) 

這樣的東西是如何上面從數學題目的論文有什麼不同?

所以你必須做出妥協。

一些方法進行:

  • 限制檢測的編程語言的量(可能「隱藏的」那些使用大量的sepcial字符如Perl,和C(括號),或Python(縮進和冒號))
  • 將標記添加到html或接受<br><p>或甚至只是\n是有效的分隔符。當然,該HTML包含<verbatim>或其他標籤來分隔代碼?

然後做一些統計分析,對特殊字符的

  • 用法,
  • 改變壓痕的水平,
  • 方差線的長度,在使用
  • 金額的獨特單詞
  • 重複單詞(命令和變量名稱可能會重複超過文本中的普通單詞)
  • 語言標記(「該」在代碼中很少見,但經常在語言中使用)
相關問題