簡體   English   中英

如何從HTML中刪除Java中特殊標記以外的所有內容?

[英]How to remove everything from HTML except special tag in java?

我想通過僅提取<form> ... </form>來解析HTML字符串。 不需要其他所有東西,我可以將其刪除。

今天,我有一些助手可以通過replaceAll特殊標記內容刪除,例如:

    /** remove form */
    String newString  = string.replaceAll("(?s)<form.*?</form>", "");       

(?s)<form.*?</form>

刪除form標簽。 但是反之亦然,刪除除form以外的所有內容。

我該如何解決?

看看我的Gskinner示例

嘗試下面的代碼。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Client {

    private static final String PATTERN = "<form>(.+?)</form>";
    private static final Pattern REGEX = Pattern.compile(PATTERN);

    private static final boolean ONLY_TAG = true;

    public static void main(String[] args) {

        String text = "Hello <form><span><table>Hello Rais</table></span></form> end";
        System.out.println(getValues(text, ONLY_TAG));
        System.out.println(getValues(text, !ONLY_TAG));

    }

    private static String getValues(final String text, boolean flag) {
        final Matcher matcher = REGEX.matcher(text);
        String tagValues = null;
        if (flag) {
            if (matcher.find()) {
                tagValues = "<form>" + matcher.group(1) + "</form>";
            }

        } else {
            tagValues = text.replaceAll(PATTERN, "");
        }
        return tagValues;
    }
}

您將獲得以下輸出

<form><span><table>Hello Rais</table></span></form>
Hello  end

以下代碼將為您提供所需的指導:

 String str = "<html><form>test form</form></html>";
 String newString  = str.replaceAll("[^<form</form>]+|((?s)<form.*?</form>)", "$1");  
 System.out.println(newString);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM