Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取java中html文件的一部分_Java_Html_Regex_Parsing - Fatal编程技术网

获取java中html文件的一部分

获取java中html文件的一部分,java,html,regex,parsing,Java,Html,Regex,Parsing,可能重复: 我有一个如下所示的HTML文件: <html> <head> <title>foobar</title> </head> <body> bla bla<br /> {[CONTAINER]} Hello {[/CONTAINER]} </body> </html> 福巴 布拉布拉布拉 {[CONTAINER]}

可能重复:

我有一个如下所示的HTML文件:

<html>
  <head>
    <title>foobar</title>
  </head>
  <body>
    bla bla<br />
    {[CONTAINER]}
      Hello
    {[/CONTAINER]}
  </body>
</html>

福巴
布拉布拉布拉
{[CONTAINER]} 你好 {[/CONTAINER]}
如何从html文件的其余部分中获取容器中的“Hello”?我几年前就在PHP中完成了这项工作,我记得有一个REGEX函数调用definde类函数,并将容器的内容作为参数


有人能告诉我如何在Java中做到这一点吗?

您可以使用jsoup解析HTML,更多帮助


更详细的

您可以使用jsoup解析HTML,更多帮助


更详细的

为什么要使用Java? 您只需将DOM API与JavaScript一起使用即可:

document.getElementById("id_container").firstChild.data; // beware of \n char
或者以效率较低的方式:

document.getElementById("id_container").innerHTML;
但是,如果文件是在服务器上生成的,也可以使用相同的API:


为什么要使用Java? 您只需将DOM API与JavaScript一起使用即可:

document.getElementById("id_container").firstChild.data; // beware of \n char
或者以效率较低的方式:

document.getElementById("id_container").innerHTML;
但是,如果文件是在服务器上生成的,也可以使用相同的API:


您可以使用正则表达式来匹配
{[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);
}
//未捕获打开的标记。非捕获意味着当我们将它与一些文本进行匹配时,它不会包含在结果中。

String open=“(?您可以使用正则表达式来匹配
{[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);
}
//未捕获打开标记。未捕获意味着当我们将其与某些文本进行匹配时,它不会包含在结果中。


String open=“(?@user2029057:您能说明我们可以对您的文本做出什么样的假设吗?HTML在使用正则表达式时有很多方法会使尝试失败。规范帖子是[一个众所周知的StackOverflow帖子](),例如,处理标记属性。@Nikita的回答很好地涵盖了这一点。OP可以自由使用正则表达式,但明智的做法是要小心许多边缘情况。@user2029057:您能说明我们可以对您的文本做出什么样的假设吗?HTML在使用正则表达式时会有很多方法出错。规范帖子是[著名的StackOverflow post](),例如处理标记属性。@Nikita的回答很好地涵盖了这一点。OP可以自由使用正则表达式,但明智的做法是要小心许多边缘情况。他不是要求解析HTML,而是要求从两个非常特定的标记之间获取一些文本。当然,更新更详细的链接您仍然在谈论HTML解析,其他的e、 他没有要求解析HTML,他要求从两个非常特定的标记之间获取一些文本。当然,用更详细的链接更新你仍然在谈论HTML解析。他没有要求解析HTML,他要求从两个非常特定的标记之间获取一些文本。他没有要求解析HTML,他要求从m介于2个非常具体的标记之间。+1用于实际回答问题,而不是跳上“不使用正则表达式解析html”的潮流。另一件事是,它不关心它们之间是否有任何html标记(如果有)。感谢所有编写此问题的人!确实如此:)你只需要每\两次就可以了!+1用于实际回答问题,而不是跳上“不使用正则表达式解析html”的潮流。另一件事是,它不在乎它们之间是否有任何html标记(如果有)。感谢所有写过的人!它是:)你只需要每\两次就可以了!