Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 7

Регулярные выражения (поиск слов)

29.11.2015, 17:34. Показов 5713. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо осуществить поиск слов, которые разделены запятыми или пробелами.(Слова должны содержать только латинские символы [A-Za-z], если слово содержит другой то оно не должно выводиться на экран. Вот что я надумал, но почему то не работает если вводить (abc23, то он выведет это слово все равно но только abc) а как сделать что бы слова разделялись запятыми? и проверка было всего слова. Спасибо.
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
package search; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
 
import java.io.IOException; 
 
public class search { 
 
 
public static void main(String[] args) throws IOException { 
StringBuffer str = new StringBuffer(); 
char ch; 
String a; 
System.out.println("Введите строку"); 
str = new StringBuffer(); 
while ((ch=(char)System.in.read())!='\n') 
str.append(ch); 
a=str.toString(); 
Pattern pattern= Pattern.compile("([a-zA-z&&[^0-9]])+"); 
Matcher matcher=pattern.matcher(a); 
System.out.println("Искомые слова:"); 
while(matcher.find()){ 
System.out.println(matcher.group()); 
 
} 
} 
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2015, 17:34
Ответы с готовыми решениями:

Регулярные выражения - поиск
Здравствуйте. У меня есть строка, полученная от FTP-сервера: 227 Entering Passive Mode (185,28,20,28,116,36). Как найти число в скобках,...

Поиск подстроки через регулярные выражения
Здравствуйте, требует получить подстроку из большого текста. Пример подстрок: "1. Малайзия 15:30 2. Мьянма +68 1.74 3.86 4.45 1.20...

Регулярные выражения - поиск абзацев в тексте
Привет всем! Помогите разбить рандомный текст на абзацы. Вот пример моего решения, но там проблема: должно вывести 3 фрагмента текста но...

11
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
30.11.2015, 13:10
непонятно поставлена задача, надо пару нормальных примеров - вот типа, строка корректная, а вот не корректная
и вот типа так должно написать на экране
0
 Аватар для Robinser
12 / 12 / 0
Регистрация: 12.08.2011
Сообщений: 275
19.08.2018, 23:48
Можно ли как-то изменить этот код под вот это задание
"Создать случайный текст(строку), в котором будет содержаться номер этажа на котором вы живете в формате «этаж(е) 4»
Написать регулярное выражение, которое найдет в тексте эту подстроку даже если это будет любой этаж и само слово этаж может быть в разном падеже (этаж 4, этаже 4 и т.д.)"
В примере строка вводится, а надо просто сделать типа "Я живу в доме на этаже 4"
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
20.08.2018, 10:32
Robinser, таким регулярным выражением можно выделить "этаж номер": [эЭ][тТ][аА][жЖ]([аА]|[уЕ]|([еЕ][йЙ]))? \d+
В () указаны окончания
А вообще стоило бы создать отдельную тему, т.к. Ваш вопрос с этой темой связан только регулярным выражением...
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.08.2018, 11:11
Цитата Сообщение от JIeIIIa Посмотреть сообщение
[эЭ][тТ][аА][жЖ]([аА]|[уЕ]|([еЕ][йЙ]))?
где-то там флажок был ignoreCase
1
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
20.08.2018, 11:48
xoraxax, есть, но у меня не работает:
Java
1
2
3
4
5
6
7
Pattern pattern = Pattern.compile("этаж(а|у|(ей))? \\d+", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CHARACTER_CLASS | Pattern.UNICODE_CASE);
String str = "этажей 43   этаж 34    эТАж 234";
Matcher matcher = pattern.matcher(str);
 
while (matcher.find()) {
   System.out.println(matcher.group());
}
Выводит:
Code
1
2
этажей 43   
этаж 34
Для английского текста в работает отлично.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.08.2018, 12:06
у меня этот код все три выводит

Добавлено через 1 минуту
можно просто (?iu) перед выражением поставить
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
20.08.2018, 12:09
Цитата Сообщение от xoraxax Посмотреть сообщение
у меня этот код все три выводит
Win 10, JDK 1.8.0_144, IDEA 2018.2.1. Хотя судя по java doc должен три выводить.
Цитата Сообщение от xoraxax Посмотреть сообщение
(?iu) перед выражением поставить
Тоже два)
0
10 / 11 / 2
Регистрация: 10.07.2018
Сообщений: 70
Записей в блоге: 1
21.08.2018, 21:52
Цитата Сообщение от Lynx_ Посмотреть сообщение
Необходимо осуществить поиск слов, которые разделены запятыми или пробелами
эээм
Java
1
String s[] = str.split(" ");
Потом в полученном массиве в каждой строке удаляй запятые, чтобы их быстро найти используй indexOf(",")

Добавлено через 1 минуту
А вообще, по правилам после запятой обязательно должен стоят пробел. Ещё есть вариант - сначала прочитать строку, потом при помощь replace() удалить все запятые, а потом использовать split
и без регулярных выражений. (по скорости уж точно быстрее)

Добавлено через 3 минуты
Цитата Сообщение от Lynx_ Посмотреть сообщение
Слова должны содержать только латинские символы [A-Za-z], если слово содержит другой то оно не должно выводиться на экран
аа
так тоже можно проверить, последовательно пробегая по символам

Добавлено через 13 минут
Держи код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.io.*;
import java.util.*;
 
public class MainClass {
 
    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        System.out.println("Введите строчку>>");
        String str =  new BufferedReader(new InputStreamReader(System.in)).readLine();
        str = str.replaceAll(",", "");
        String s[] = str.split(" ");
        System.out.println("Искомые слова:");
        for(int i = 0; i<s.length; i++){
            boolean check = true; //изначально полагаем, что s[i] - искомое слово
            for(int j = 0; j<s[i].length() && check; j++){
                char c = s[i].charAt(j);
                check = (c>='a' && c<='z') || (c>='A' && c<='Z');
                if(!check) break;
            }
            if(check) System.out.println(s[i]);
        }
    }
}
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.08.2018, 21:56
Цитата Сообщение от ManyGames Посмотреть сообщение
Держи код:
а теперь посмотри на даты
0
10 / 11 / 2
Регистрация: 10.07.2018
Сообщений: 70
Записей в блоге: 1
21.08.2018, 21:58
Цитата Сообщение от xoraxax Посмотреть сообщение
а теперь посмотри на даты
Я написал, потом ток увидел
0
 Аватар для Robinser
12 / 12 / 0
Регистрация: 12.08.2011
Сообщений: 275
23.08.2018, 17:24
Цитата Сообщение от ManyGames Посмотреть сообщение
Я написал, потом ток увидел
но всетаки спасибо, пригодится )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.08.2018, 17:24
Помогаю со студенческими работами здесь

Регулярные выражения (поиск двух строк)
Суть такая, мне нужно получить названия всех картинок и ссылок с сайта (&lt;img src= и &lt;a href) Собственно проблему вызывает...

Регулярные выражения (поиск текста независимо от падежа)
Прошу помочь с кодом для такой задачи. В соседней теме был рассмотрен пример с регулярными выражениями, но нету решения для этой задачи....

Регулярные выражения
как составить регулярные выражения, чтобы выводил имена зон (*.ru, *.com и тд.) .. просто чтобы выводил имя до точки, у меня выводит с...

Регулярные выражения
Пока только начинаю разбираться с регулярными выражениями. Делал лабораторную для вуза, уперся как раз в них. Нужно чтобы выражение...

Регулярные выражения
Здравствуйте, Пытаюсь составить регулярное выражение &quot;любойтекстСимволЛюбойтекст&quot; Пишу &quot;^.*c.*$&quot;, но работает только...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru