Possible Duplicate:
RegEx match open tags except XHTML self-contained tags
我有一个如下所示的 HTML 文件:
<html>
<head>
<title>foobar</title>
</head>
<body>
bla bla<br />
{[CONTAINER]}
Hello
{[/CONTAINER]}
</body>
</html>
如何从 html 文件的其余部分中获取 Container 中的“Hello”?几年前我在 PHP 中做过这个,我记得一个 REGEX 函数,它调用一个定义类函数并将容器的内容作为参数。
谁能告诉我如何在 Java 中执行此操作?
您可以使用正则表达式来匹配 {[CONTAINER]}
和 {[/CONTAINER]}
之间的所有内容。示例:
// Non capturing open tag. Non-capturing mean it won't be included in result when we match it against some text.
String open = "(?<=\\{\\[CONTAINER\\]\\})";
// Content between open and close tag.
String inside = ".*?";
// Non capturing close tag.
String close = "(?=\\{\\[/CONTAINER\\]\\})";
// Final regex
String regex = open + inside + close;
String text = "<html>..."; // you string here
// Usage
Matcher matcher = Pattern.compile(regex, Pattern.DOTALL).matcher(text);
while (matcher.find()) {
String content = matcher.group().trim();
System.out.println(content);
}
但是你必须要小心。因为它仅适用于 {[CONTAINER]}
和 {[/CONTAINTER]}
。不支持此自定义标签的属性。
您还必须知道它不以任何特定方式处理 html 标记。因此,如果您的 CONTENT
标签之间有 html 标签 - 它们将被包含在内。