Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Regex из 2 сделать 1


Автор: Anime 30.9.2013, 11:41
Код

    public static void main(String[] args) {
            String html = "<html>\n" +
                "<head>\n" +
                "<title></title>\n" +
                "</head>\n" +
                "\n" +
                "<table>\n" +
                "<tr><td><a href=\"in.pp?p=1\" onclick=\"show(this, 'DLINA');\">11111</a></td><td>Длина: 0,23 см &nbsp;111</td></tr>\n" +
                "<tr><td>11</td><td>22</td></tr>\n" +
                "<tr><td>33</td><td>44</td></tr>\n" +
                "</table>\n" +
                "\n" +
                "<table>\n" +
                "<tr><td><a href=\"in.pp?p=2\" onclick=\"show(this, 'HATA');\">222222</a></td><td>Длина: 0,01 см</td></tr>\n" +
                "<tr><td>44</td><td>55</td></tr>\n" +
                "<tr><td>77</td><td>66</td></tr>\n" +
                "</table>\n" +
                "\n" +
                "</body>\n" +
                "</html>\n" +
                "";
            
            
            //<a[^>]*onclick=\"show[a-zA-Z,'\\s\\(\\);]*\">(.+)</a>
            //Длина:\\s([0-9,]+)

            Pattern p = Pattern.compile("<a[^>]*onclick=\"show[a-zA-Z,'\\s\\(\\);]*\">(.+?)</a>.*Длина:\\s([0-9,]+)", Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
            Matcher m = p.matcher(html);
            while(m.find()) {
                System.out.println(m.group(1) + " " + m.group(2));
            }
    }


Вот есть два паттерна ("<a[^>]*onclick=\"show[a-zA-Z,'\\s\\(\\);]*\">(.+?)</a>" и такой "Длина:\\s([0-9,]+)") по отдельности они работают и выдают по два значения, а вот как их соединить?

Автор: LSD 30.9.2013, 15:48
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)