Java - регулярное выражение поиска строки - PullRequest
1 голос
/ 20 декабря 2010

Я читаю строку из файла, который читается как

<div style="Z-INDEX: 654; BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: 0px; WIDTH: 80px; HEIGHT: 22px; BORDER-TOP: 0px; TOP: 64px; CURSOR: auto; BORDER-RIGHT: 0px; LEFT: 240px" id="textboxElt11286249556014dIi15v" lineid="lineid" pos_rel="false" x1="240" x2="320" y1="64" y2="86"><input style="WIDTH: 80px; HEIGHT: 20px" id="textboxElt11286249556014dIi15v_textbox" title="Enter Registration Number Here" tabindex="1" value=" " maxlength="15" size="10" name="scheduled_tribe_registration_number_text"></input></div>

будет несколько строк такого рода, и данные не исправлены. Я хочу получить значение стиля. Я хочу сделать это с помощью регулярных выражений, поскольку у дочерних элементов тоже могут быть атрибуты стиля, и я хочу получить весь стиль. атрибутов

Ответы [ 3 ]

2 голосов
/ 20 декабря 2010

Существует много хороших html-анализаторов для Java, HTMLCleaner является одним из них.

Вот лучший способ получить атрибут стиля:

import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;

public class Test {

    public static void main(String[] args) throws Throwable {
        HtmlCleaner cleaner = new HtmlCleaner();
        String html = "<div style=\"Z-INDEX: 654; BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: 0px; WIDTH: 80px; HEIGHT: 22px; BORDER-TOP: 0px; TOP: 64px; CURSOR: auto; BORDER-RIGHT: 0px; LEFT: 240px\" id=\"textboxElt11286249556014dIi15v\" lineid=\"lineid\" pos_rel=\"false\" x1=\"240\" x2=\"320\" y1=\"64\" y2=\"86\"><input style=\"WIDTH: 80px; HEIGHT: 20px\" id=\"textboxElt11286249556014dIi15v_textbox\" title=\"Enter Registration Number Here\" tabindex=\"1\" value=\" \" maxlength=\"15\" size=\"10\" name=\"scheduled_tribe_registration_number_text\"></input></div>";
        TagNode node = cleaner.clean(html);
        TagNode div = node.findElementByName("div", true);
        System.out.println(div.getAttributeByName("style"));
    }
}

Если вы знакомы с jquery, вам также следует проверить jsoup .

0 голосов
/ 20 декабря 2010

Не используйте регулярные выражения для анализа HTML. Этот тоже использует регулярное выражение:

String line = getNextLineFromInput();
String[] parts = line.split("\"");
String style = "";
for (int i = 0; i < parts.length; i++) {
  if (parts[i].endsWith("style=") {
    style = parts[i+1];
    break;
  }
}

Примечание: это будет сбой для всех реальных HTML-файлов, но вы упомянули некоторые входные данные со строками, как в примере строки; это очень специализированное решение именно для этого типа ввода.

0 голосов
/ 20 декабря 2010

Не используйте регулярные выражения для анализа HTML.При этом, вы можете использовать что-то вроде:

<div \s*style="([A-Z0-9-;: ]*)"\s*>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...