2010-09-14 92 views
1

我想處理一個字符串,其中我想找到多個字符串,我試圖讓在Java的HTML文本一些熒光筆..
例子:
查找和處理短語table, row, primary keyEach table row contains a primary key column
的文本帶有標籤的html文本,如<b>,<img..>...
如果在ex的短語中間有可忽略的標籤。 primary <b>key</b>(可忽略的標籤是不會中斷文本含義的標籤,如<b><i>,另一方面標籤如<div>中斷文本含義)可以替換該短語。
如果一個短語是其他短語的短語,則長度越長優先級越高。爲前。在文中提到的第二個應該proccesed尋找table rowrow contains找到字符串中多個短語的最佳方法?

我的第一個僞代碼是事端這樣的:

for (each phrase) 
    while(tex.hasNext(phrase)) do 
    processPhraseInText(text,phrase) 
    end-while 
end-for 

這是工作,但文本被遍歷phrases.count()倍和我正在尋找一種更快的方式來處理所有的讚美

我想嘗試正則表達式和模式匹配器在此使用。
我想出了兩種方式,所有以某種方式尋找這樣的短語創建一個正則表達式:regex1|regex2|..|regexN2.創建字字一個正則表達式(和一個Matcher對象)

什麼可能是更好的方法?還是有一些完全不同的方式或現有的圖書館呢?許多匹配器的第二種方式與我已有的溶劑一樣嗎?

回答

0

如果你爲每個短語做一個正則表達式,你仍然需要遍歷文本幾次。

如果您製作一個正則表達式regex1|regex2|..|regexN,您可以一次搜索文本。 很多短語會更快。

+0

感謝

儲存您所有的關鍵字,你向我保證:)你能告訴我,如果一個匹配的形式給出了會更快一些,一般比sollution我已經有了?我現在使用indexOf爲每個短語,簡單的僞代碼張貼,我知道它並不多 – Zavael 2010-09-14 08:25:49

+1

你應該配置文件,如果它的性能。我想我在RegEx的其他地方閱讀的地方很慢,但我沒有RegEx guru。 – atamanroman 2010-09-14 08:59:13

0

您可以輕鬆地一次完成。你不需要關鍵字,因爲HTML是一種基於標籤的語言,但是假設你想要根據關鍵字進行着色。在Trie

Foreach character 
    If character is not < send to output 
    If character is < 
     Read until you get > (or ' ' if you want to deal with attributes too) 
     If prefix is in Trie, colour appropriately and add to output 
+0

也許我不明白,但如果關鍵字是你的意思是我的短語,比我需要他們,因爲我想強調短語,而不是html標籤 – Zavael 2010-09-14 08:33:23

相關問題