Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с регуляркой 
:(
    Опции темы
yuliadubinina
  Дата 24.5.2013, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.5.2013

Репутация: нет
Всего: нет



Почему следующая регулярка
Код

(.*[^\da-zA-Z]+rebase[^\da-zA-Z]+.*)|(^rebase[^\da-zA-Z]+.*)|(.*[^\da-zA-Z]+rebase$)|(^rebase$)

возвращает false на matches() не смотря на присутствие <A HREF=/rebase/rebase.seqs.html> в

<HTML><HEAD><TITLE>REBASE Sequence Data</TITLE></HEAD> <!--========================================================--> <!--== Dana Macelis for Dr. R.J. Roberts ======--> <!--========================================================--> <BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#000080 ALINK=#5577CC VLINK=#5577CC> <CENTER> <TABLE WIDTH=100%><TR ALIGN=CENTER VALIGN=CENTER> <TD><A HREF=/rebase/index.html><IMG SRC=/rebase/rebhomeB4.gif BORDER=0 ALT=Home></A></TD> <TD> <FONT SIZE=5><b>REBASE <font color=#5599BB>Sequence Data</font></b></FONT> 06/22/2011<br> <font size=2 color=gray>DNA and Protein sequences are shown in <font color=#77AADD><b>FASTA</b></font> Format.</font> <br><table cellpadding=6><tr> <td bgcolor=#99FF99><a href=javascript:window.close();><font size=2 color=#000000>Close Window</font></a></td><td bgcolor=#FFFF99><a href=javascript:history.go(-1);><font size=2 color=#000000>Back</font></a></td> <td bgcolor=lightyellow><a href=javascript:history.go();><font size=2 color=#000000>Refresh</font></a></td> </tr></table> </TD> <TD><A HREF=/rebase/rebase.seqs.html><IMG SRC=/rebase/rebseqs.gif BORDER=0 ALT=Seqs></A></TD> </TR></TABLE> <br><br> <table><tr><td align=left><b><FONT size=3><xmp> >M.EcoCB9615DamP GATC 278 aa MKKNRAFLKW AGGKYPLLDD IKRHLPKGEC LVEPFVGAGS VFLNTDFSRY ILADINSDLI SLYNIVKMRT DEYVQAAREL FVPETNCAEV YYQFREEFNK SQDPFRRAVL FLYLNRYGYN GLCRYNLRGE FNVPFGRYKK PYFPEAELYH FAEKAQNAFF YCESYADSMA RADDASVVYC DPPYAPLSAT ANFTAYHTNS FTLEQQAHLA EIAEGLVERH IPVLISNHDT MLTREWYQRA KLHVVKVRRS ISSNGGTRKK VDELLALYKP GVVSPAKK </xmp></font></b></td></tr></table><hr> </CENTER> </BODY> </HTML>



Это сообщение отредактировал(а) yuliadubinina - 25.5.2013, 14:45
PM MAIL   Вверх
yuliadubinina
Дата 24.5.2013, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.5.2013

Репутация: нет
Всего: нет



Выяснилось, что если скопипастить html код с этого форума, то регулярка работает. Если брать контент вот этой страницы http://rebase.neb.com/cgi-bin/seqsget?M.Ec...mP.CP001846.pro и копипастить его в debug из variables, то не работает. Не знаю почему  smile 
PM MAIL   Вверх
yuliadubinina
  Дата 25.5.2013, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.5.2013

Репутация: нет
Всего: нет



Нужно найти слово rebase в тексте html страницы в любом месте. Для этого используется регулярка, которая на matches() отдает false, не смотря на то, что rebase в тексте страницы есть. Здесь в прицепе пример данных, на которых эта регулярка не работает. И пример кода, который эту регулярку запускает. Не могу пока понять почему так происходит
Код

private static String readString(String filename) throws IOException, FileNotFoundException {
        FileInputStream fis = new FileInputStream(filename);
        byte[] bytes = new byte[10000];
        byte[] buffer = new byte[10000];
        int n;
        int offset = 0;
        while ((n = fis.read(buffer)) > 0) {
            for (int i = 0; i < n; i++) {
                bytes[i + offset] = buffer[i];
            }
            offset += n;
        }
        fis.close();
        String content = new String(bytes, 0, offset);
        return content;
    }

public static void main(String[] args) throws Exception {
        String content = readString("teststring");
        System.out.println(content);
        String host = readString("testhost");

        String[] parts = host.split("\\.");

        for (String part : parts) {
            if (part.length() < 4) {
                continue;
            }
//            System.out.println(part+" "+content.matches("(.*[^\\da-zA-Z]+" + part + "[^\\da-zA-Z]+.*)"
//                    + "|(^" + part + "[^\\da-zA-Z]+.*)"
//                    + "|(.*[^\\da-zA-Z]+" + part + "$)"
//                    + "|(^" + part + "$)"));
            System.out.println(part + " " + content.matches("(^|.*[^\\da-zA-Z]+)" + part + "([^\\da-zA-Z]+.*|$)"));
        }
    }


Это сообщение отредактировал(а) yuliadubinina - 25.5.2013, 14:48

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Desktop.zip 0,95 Kb
PM MAIL   Вверх
Pawl
Дата 25.5.2013, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



может я не понял ТЗ, но для ответа, содержится ли слово в строке, регулярка не нужна.если вместо
Код

System.out.println(part + " " + content.matches("(^|.*[^\\da-zA-Z]+)" + part + "([^\\da-zA-Z]+.*|$)"));

написать
Код

System.out.println(part + " " + content.contains(part));

результат будет
Код

...
rebase true



--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1151 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.