Что такое регулярное выражение и как загрузить HTML-контент с помощью регулярных выражений Android - PullRequest
0 голосов
/ 07 февраля 2012

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

У меня есть приведенный ниже html-файл, и мне нужно получить {{book name}} и остальное содержимое с регулярными выражениями, как это сделать, пожалуйста, помогите мне заранее спасибо

Ответы [ 3 ]

2 голосов
/ 07 февраля 2012

Регулярные выражения используются для определения и поиска шаблона текста в строке.

Просто проверьте ниже ссылку, вопрос stackoverflow с хорошим объяснением использования регулярных выражений.

Как использовать регулярное выражение и присвоить результат переменным в Android?

Надеюсь, это может вам помочь.

1 голос
/ 08 февраля 2012

для получения содержимого из XML / HTML наилучшим из возможных способов является XPath, вы можете направить запрос на получение элемента в DOM, который содержит необходимые данные.

Если HTML - это ваш контент, тогда я предлагаю вам иметь атрибут, который указывает, что это имя книги.

, вы можете использовать запрос XPath, например,

// p [@ class = 'p1'] / b

Условием для XPath является то, что HTML-файл должен иметь правильный закрывающий тег.

Но если вы хотите использовать регулярное выражение, используйте это

.+<p class=\"p1">

Это выражение будет соответствовать классу p1, и вам нужно получить конечный индекс для этого выражения, чтобы получить позицию тега b после тега p.

U можете попробоватьвыражение в

http://www.gskinner.com/RegExr/

1 голос
/ 07 февраля 2012

Я бы использовал что-то вроде этого:

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

class SimpleRegexExample {
    //TODO: Load your html content from file
    protected String html = "<html>\n"
            + "<head>\n"
            + "  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"
            + " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n"
            + "  <title></title>\n"
            + "   <meta name=\"Generator\" content=\"Cocoa HTML Writer\">\n"
            + "   <meta name=\"CocoaVersion\" content=\"1038.36\">\n"
            + "    <style type=\"text/css\">\n"
            + "        p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 26.0px Helvetica}\n"
            + "        p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}\n"
            + "        p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}\n"
            + "        p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica; min-height: 23.0px}\n"
            + "        p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}\n"
            + "    </style>\n"
            + "</head>\n"
            + "\n"
            + "    <body>\n"
            + "      <p class=\"p1\"><b>{{BookName}}</b></p>\n"
            + "      <p class=\"p2\">by {{AuthorName}}</p>\n"
            + "      <p class=\"p3\"><br></p>\n"
            + "      <p class=\"p3\"><br></p>\n"
            + "      <p class=\"p4\"><span class=\"Apple-converted-space\"> </span></p>\n"
            + "      <p class=\"p5\">{{AuthorBio}}</p>\n"
            + "      <p class=\"p3\"><br></p>\n"
            + "      <p class=\"p3\"><br></p>\n"
            + "      <p class=\"p5\">{{Credits}}</p>\n"
            + "      <p class=\"p3\"><br></p>\n"
            + "      <p class=\"p3\"><br></p>\n"
            + "   </body>\n"
            + "</html>\n";

    public SimpleRegexExample() {
        // Split the html text into single lines
        StringTokenizer st = new StringTokenizer(html, "\n");

        // Initialize the regex
        String regex = "\\{\\{(.*?)\\}\\}";
        Pattern p = Pattern.compile(regex);

        // Parses each line
        while (st.hasMoreTokens()) {
            String token = st.nextToken();
            Matcher m = p.matcher(token);

            // Searches for matches
            while (m.find()) {
                if (m.group(1) != null) {
                    // TODO: Set here your replacement
                    html = html.replace("{{" + m.group(1) + "}}", m.group(1));
                }
            }
        }

        // Prints the result
        System.out.println(html);
    }

    public static void main(String[] args) {
        new SimpleRegexExample();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...