0

我正在开发一个插件。我将解析 HTML 文件。我有一个这样的命名约定:

<!--$include="a.html" -->

或者

<!--$include="a.html"-->

类似

根据这种模式(类似于服务器端包含)我想搜索一个 HTML 文件。问题是:

Find that pattern and get value (a.html at my example, it is variable)

它应该是这样的:

while(!notFinishedWholeFile){
    fileName = findPatternFunc(htmlFile)
    replaceFunc(fileName,something)
}

PS:在 Java 中使用正则表达式或以不同的方式实现它(就像使用一样.indexOf())我不知道哪个更好。如果正则表达式通过性能擅长这种情况,我想使用它。

有任何想法吗?

4

3 回答 3

0

你的意思是这样吗?

<!--\$include=\"(?<htmlName>[a-z-_]*).html\"\s?-->
于 2012-12-30T19:28:57.527 回答
0

然后将文件读入字符串

str = str.replaceAll("(?<=<!--\\$include=\")[^\"]+(?=\" ?-->)", something);

将用字符串替换文件名something,然后可以将字符串写回文件。
(注意:这会替换双引号内的任何文本,而不仅仅是有效的文件名。)

如果您只想用 html 扩展名替换文件名,请交换[^\"]+for [^.]+.html.

在这个任务中使用正则表达式在性能方面是很好的,但是请参阅 如何使用正则表达式来解析 Java 中的 HTML?Java 正则表达式性能等。

于 2012-12-30T23:48:38.197 回答
0

我使用了这种模式:

"<!--\\$include=\"(.+)(.)(html|htm)\"-->"
于 2013-02-18T20:01:25.983 回答