我想处理一个String,我想在其中找到多个字符串,我想在java中用html文本制作一些荧光笔..
例如:
在table, row, primary key
中查找并处理短语Each table row contains a primary key column
文本是带有<b>,<img..>...
的标签的html文本
如果在前面的短语中间有可忽略的标记。 primary <b>key</b>
(可忽略标记是不会中断文本含义的标记,如<b>
或<i>
,另一方面标记如<div>
会中断文本含义)被替换。
如果一个短语是其他短语的子短语,则该短语具有更高的优先级。对于前在提到的文本中搜索table row
和row contains
,第二个应该被处理
我的第一个伪代码是这样的东西:
for (each phrase)
while(tex.hasNext(phrase)) do
processPhraseInText(text,phrase)
end-while
end-for
它正在运行,但是文本遍历了phrase.count()次,我正在寻找一种更快的方法来立即处理所有的赞美
我想尝试使用正则表达式和模式匹配器。
我想出了两种方法, 1。为所有看起来像这样的短语创建一个正则表达式:regex1|regex2|..|regexN
或 2。为每个短语创建一个正则表达式(和一个匹配器对象)
可能是更好的方法?或者是否有一些完全不同的方式或现有的库?不是第二种方式,许多匹配器就像我已经拥有的溶剂一样吗?
答案 0 :(得分:0)
如果你为每个短语制作一个正则表达式,你仍然需要在文本上循环几次。
如果您制作一个正则表达式regex1|regex2|..|regexN
,则可以一次性搜索文本。
许多短语会更快。
答案 1 :(得分: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