0

我有一个 html 页面。我只想在句子/文本末尾带有问号的标签中提取文本。我使用:

<.+?>(.+?)<.+?>

获取标签内的文本。但这有两个问题:1-我不想要的所有嵌套标签也被提取了。(我只想要纯文本)2-我只想在末尾有问号的标签中获取那些文本.

我不知道该怎么做。有人可以帮我(用Java)。PS:我的html页面格式错误,因此,使用JSoup等工具不是一个选择。这就是为什么我只使用正则表达式。

4

2 回答 2

0

如果您有无限嵌套,则检测嵌套和不匹配是困难的或不可能的,但您可以试试这个:

<(.+?)>(.+?\?)</$1>

它匹配再次关闭且仅在末尾带有问号的标签。

红字

于 2012-08-17T10:13:47.197 回答
0

你有充分的理由使用正则表达式吗?

你可以自己分析你的html代码。也许它更快......如果你没有任何标签,这是一个小解决<mytag?>方案</mytag?>

    final LinkedList<String> chunks = new LinkedList<String>();

    final String text = "<i>italic</i><mytag?>text</mytag?><href>anchor</href> <mySecondTag?>word</mySecondTag?>";

    String rest = text;
    int pos;
    while ( (pos = rest.indexOf("?>") )!=-1)
    {
        final int endTag = rest.indexOf("<", pos);
        chunks.add(rest.substring(pos+2, endTag));
        rest = rest.substring(rest.indexOf(">", endTag+1)+1);
    }


    System.out.println(chunks);
于 2012-08-17T14:59:49.010 回答