Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
 Аватар для Golden Star
0 / 0 / 1
Регистрация: 25.11.2012
Сообщений: 34

Найти совпадения в тексте

25.11.2012, 22:43. Показов 4974. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, ребята.
Прошу прощения, если повторюсь и такой вопрос уже звучал. Не хватило сил перелопатить весь форум)
Пишу вот программку, которая будет сканировать сайт, искать в нем е-мейлы и выводить результаты во фрейме в JTextArea.
Но столкнулась с проблемкой: совпадения есть, но программка их не находит( Возможно не правильно задала Pattern... А может просто руки-крюки) Откройте мне глазки, пожалуйста и не обессудьте, если где-то не правильно выразилась))) Я только учусь)

В поле класса имеется коллекция адресов сайтов, которые выведены в JList'e и по которым веду поиск:
Java
1
private List<String> urls = null;
Заполнены в конструкторе:
Java
1
2
3
4
5
6
7
8
9
10
11
 public MainJFrame() {
        initComponents();
 
        urls = new ArrayList<String>();
        urls.add("http://www.google.com");
        urls.add("http://www.ukr.net");
        urls.add("http://www.voyna-plemyon.ru");
        urls.add("http://www.oracle.com");
 
        updateList();
    }
Вот код поиска:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 private void jButtonScanActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // Scan text from web-site
        //Pattern pattern = Pattern.compile("([\\w\\.-]+)*[\\w-]+@[\\w-]+(\\.[\\w]{2,4})+"); //Пробую или этот вариант
        Pattern pattern = Pattern.compile(".*@.*", Pattern.CASE_INSENSITIVE);                    //Или этот
        Matcher matcher = pattern.matcher(text);
 
 
        for (String webname : urls) {
            try {
                URL url = new URL(webname);
                URLConnection urlc;
 
                urlc = url.openConnection();
                
                BufferedReader buffer = new BufferedReader(new InputStreamReader(urlc.getInputStream(), "UTF8"));
 
                StringBuilder builder = new StringBuilder();
                int byteRead;
 
                while ((byteRead = buffer.read()) != -1) {
                    builder.append((char) byteRead);
                }
                
                buffer.close();
                text = builder.toString();
                
                jTextArea1.append("Scanned site: " + webname + "\nText length: " + text.length());
                
                
            } catch (MalformedURLException ex) {
                Logger.getLogger(MainJFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(MainJFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
 
            while (matcher.find()) {
 
                jTextArea1.append("Start index: " + matcher.start());
                jTextArea1.append(" End index: " + matcher.end() + " ");
                String value = matcher.group();
                jTextArea1.append(" (" + value + ") ");
            }
 
            if (!matcher.find()) {
                jTextArea1.append("\n Matcher not found!\n");
               }
        }
    }
Прикрепляю скрин результата поиска совпадений. Если не все, указала - укажу. Не скидывать же весь код)

Спасибо заранее)
Миниатюры
Найти совпадения в тексте  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2012, 22:43
Ответы с готовыми решениями:

Регулярные выражения. Найти URLs в тексте
Всем привет. Задача такова: Есть текст, необходимо пропарсить его с помощью регулярных выражений и найти все ссылки (т.е. УРЛы)....

Найти в тексте слова одинаковой длины
Дан исходный символьный файл, в котором находится текст. Найти в тексте слова одинаковой длины и записать их в новый файл. Не...

Найти и вывести совпадения в тексте
Дан текст. Вывести все вхождения заданного слова + 10 совпадений заданного слова.

7
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
26.11.2012, 11:05
1. Ничего не найдено, потому что ни по одному из приведенных адресов нет ни одного email-а. ВНЕЗАПНО, да.
2. Вторая регулярка, кстати, вообще бред найдет.
0
 Аватар для Golden Star
0 / 0 / 1
Регистрация: 25.11.2012
Сообщений: 34
26.11.2012, 14:18  [ТС]
Цитата Сообщение от aleksandy Посмотреть сообщение
1. Ничего не найдено, потому что ни по одному из приведенных адресов нет ни одного email-а. ВНЕЗАПНО, да.
2. Вторая регулярка, кстати, вообще бред найдет.
Хм.. Внезапно, конечно))) Что же с моими глазками-то?))) Ладно, поищу другие сайты) Спасибо)

Добавлено через 3 часа 7 минут
Добавила еще один сайт:
Java
1
urls.add("http://www.codefire.com");
Там точно есть е-мейл. Не находит(
0
 Аватар для Golden Star
0 / 0 / 1
Регистрация: 25.11.2012
Сообщений: 34
26.11.2012, 14:30  [ТС]
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
26.11.2012, 22:17
Цитата Сообщение от Golden Star Посмотреть сообщение
Там точно есть е-мейл. Не находит(
И не должен, т.к. неправильно работаешь с регулярками. RTFM, в общем.

Кликните здесь для просмотра всего текста
Ошибка в 5 строке


Добавлено через 1 минуту
Цитата Сообщение от Golden Star Посмотреть сообщение
Что же с моими глазками-то?
Страницы просматриваешь браузером, который авторизует тебя на сайтах, а в своей программе ты не передаешь данные для авторизации.
0
 Аватар для Golden Star
0 / 0 / 1
Регистрация: 25.11.2012
Сообщений: 34
26.11.2012, 22:38  [ТС]
Цитата Сообщение от aleksandy Посмотреть сообщение
Страницы просматриваешь браузером, который авторизует тебя на сайтах, а в своей программе ты не передаешь данные для авторизации.
я вывожу в консоль себе текст)
Java
1
System.out.println(text);
Там и смотрю так же)

Добавлено через 3 минуты
Цитата Сообщение от aleksandy Посмотреть сообщение
И не должен, т.к. неправильно работаешь с регулярками. RTFM, в общем.
Спасибо) Читала я этот туториал))) Но нужно ткнуть, чтоб поняла)

Добавлено через 7 минут
По поводу пятой строчки:

Поправила у себя в строке 5:
Java
1
Matcher matcher = null;

Занесла в строку 26, после считывания текста:
Java
1
matcher = pattern.matcher(text);
Но в таком случае программка виснет и никаких результатов не дает вообще. Дебагер показывает заминку на строчке 36:

Java
1
while (matcher.find()) {
0
 Аватар для Golden Star
0 / 0 / 1
Регистрация: 25.11.2012
Сообщений: 34
26.11.2012, 22:50  [ТС]
Скрин с консоли выведенного считанного текста.
0
 Аватар для Golden Star
0 / 0 / 1
Регистрация: 25.11.2012
Сообщений: 34
28.11.2012, 13:40  [ТС]
Вобщем работает мой новый код, но не правильно задано условие для поиска е-мейла. Заданное слово находит. Буду тренироваться. Спасибо, что кто-то отозвался с подсказкой) Как осилю - поделюсь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2012, 13:40
Помогаю со студенческими работами здесь

Как выделить в тексте совпадения?
Нахожу в БД заданный текст $keywords. Например: $des = $myrow; Вывожу на экран: echo $des; Например: -&gt; &quot;Вот...

Найти совпадения
Есть один целый массив, в котором есть подмассивы. Как вытащить все те подмассивы у которых содержимое 4-5 ячеек, будет совпадать. То...

Найти совпадения в таблице БД
Доброго времени суток. Есть таблица БД в ацессе по названием Врачи. Нужно найти тех врачей которые работают в нескольких отделениях. Сама...

Найти совпадения в строке
Как найти сопадение в строке так, чтобы искал как в вернем так и в нижнем регистре. strops не выход поскольку приходится дублировать для...

Найти совпадения из массива
$arr = array( 'слово1' =&gt; '0', 'слово2' =&gt; '1', 'no' =&gt; '227', 'НеНайдено' =&gt; '054', ); $string = 'no word ?'; $cat =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru