java - 在java中获取html文件的一部分

标签 java html regex parsing

<分区>

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 标签 - 它们将被包含在内。

关于java - 在java中获取html文件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14628000/

相关文章:

Java GUI 创建组件

java - 引用、浅复制和深复制

javascript - 为什么它只工作一次?

javascript - 当关注下一个输入字段时,jQuery 超出了最大调用堆栈大小

regex - unix 正则表达式中的星号(*) 和点星号(.*)

python - 在字符串列表中替换\x00 的最佳方法?

java - 与 Spring 一起使用时 Quartz 持久作业的问题

java - 使用TagSoup解析XML : bug with long attributes?

html - 如何使用 Bootstrap 使图像在桌面图片下方但在移动图片右侧有文字?

javascript - 正则表达式帮助 JavaScript 验证和提取最后一个数字