0

私はhtmlページを持っています。文/テキストの最後に疑問符があるタグ内のテキストのみを抽出したい。私が使用:

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

タグ内のテキストを取得します。しかし、これには 2 つの問題があります: 1- ネストされたすべてのタグも抽出されますが、これは望ましくありません。 .

これを行う方法がわかりません。誰か助けてください(Javaで)。PS: 私が持っている HTML ページの形式が正しくないため、JSoup などのツールを使用することはできません。そのため、正規表現のみを使用しています。

4

2 に答える 2

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 に答える
0

ネストが無制限の場合、ネストを検出して一致させないことは困難または不可能ですが、これを試すことができます。

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

最後に疑問符があるだけで、再び閉じるタグに一致します。

紅斑を見る

于 2012-08-17T10:13:47.197 に答える