Java字符串操作HTML标记

时间:2010-10-29 22:06:59

标签: java regex parsing html-parsing

我有一个包含一些文本和html的java字符串:

<title>test title</title>
blabla bla more text

我想要实现的目标是双重的:

1)检索<title></title>的内容并将其保存在单独的字符串中。

2)删除原始字符串的那部分:<title>test title</title>

所以最终的结果就像是

originalString:

<title>test title</title>
blabla bla more text

newString:

blabla bla more text

pageTitle:test title

我怎样才能做到这一点?常用表达? 我无法抓住它......

3 个答案:

答案 0 :(得分:1)

Don't use regular expressions to parse HTML!尝试使用符合您要求的JTidyany of these开源HTML解析器。

使用这些库可以让您的生活更轻松,因为它们旨在解析HTML。您可以获取所需的节点并从中提取文本。

答案 1 :(得分:1)

这是使用正则表达式在标题标记之间提取文本的方法:

    String s = "<title>test title</title>";
    Pattern p = Pattern.compile("<title>(.*?)</title>");
    Matcher m = p.matcher(s);
    while(m.find()){
        System.out.println(m.group(1));
    }

答案 2 :(得分:0)

It is inadvisable to parse XML/HTML with regular expressions.但是,如果你绝对必须做你要求的这件事,试试这个:

package org.apache.people.mclark.examples.regex;
import java.util.regex.*;
public class Regex1 {
    public static void main(String[] args) {
        final String subjectString = "<title>test title</title>\n" +
          "blabla bla more text"; 
        Pattern regex = Pattern.compile("<title>(.*?)</title>(.*)",
                Pattern.DOTALL);
        Matcher regexMatcher = regex.matcher(subjectString);
        if (regexMatcher.find()) {
            String pageTitle = regexMatcher.group(1);
            String leftOvers = regexMatcher.group(2);
            System.out.println("pageTitle[" + pageTitle + "]");
            System.out.println("leftOvers[" + leftOvers + "]");
        } else {
            System.out.println("no match");
        }
    }
}

我洗手了任何不当行为!