Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7lab.docx
Скачиваний:
39
Добавлен:
12.06.2018
Размер:
58.4 Кб
Скачать

Федеральное агентство связи

Федеральное государственное бюджетное образовательное

учреждение высшего образования

Поволжский государственный университет

телекоммуникаций и информатики

Кафедра Информационных систем и технологий

Лабораторная работа №7

По дисциплине «Инструментальные средства информационных систем»

«Использование регулярных выражений в java-приложениях»

Руководитель доцент к. т. н.

__________________ Никитин К.А.

Самара 2018

1 Задание. Используя пример из раздела 7 создать программу, которая выполняет поиск символов «abcdef12345» в вводимой из консоли строки текста.

import java.util.regex.*;//библиотека для использования Pattern и Matcher import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc =new Scanner(System.in);//создание экземпляра класса сканер String s1=sc.nextLine();// считывать строку до перевода строки Pattern p1 = Pattern.compile("[abcdef]|[12345]");// Pattern compile(String regex) – возвращает Pattern, который соответствует regex. Matcher matcher = p1.matcher(s1);//Matcher matcher(CharSequence input) – возвращает Matcher, с помощью которого можно находить соответствия в строке while (matcher.find()) { System.out.println("Найдено "+matcher.group()+" индекс "+matcher.end()); } } }

Выполнение:

2 Задание.

5

Определить является ли вводимая строка датой в формате dd/mm/yyyy.

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc =new Scanner(System.in);//создание экземпляра класса сканер String s1=sc.nextLine();// считывать строку до перевода строки String pattern = "(([012]\\d|3[01])/(0[13578]|1[02])/(1[6-9]\\d{2}|[2-9]\\d{3}))|(([012]\\d|3[0])/(0[469]|11)/(1[6-9]\\d{2}|[2-9]\\d{3}))|(([01]\\d|2[0-8])/02/(1[6-9]\\d{2}|[2-9]\\d{3}))"; boolean x=s1.matches(pattern);//Метод matches() проверяет строку на соответствие регулярному выражению if(x==true){ System.out.print("Дата верна"); } else{ System.out.print("Такой даты не существует"); } /* \d [0-9] Цифра от 0 до 9 X|Y X либо Y X{n} X n раз */ } }

Выполнение:

3 Задание.

5

Из многострочного текста со списком цен извлечь и отдельно вывести цены в USD, RUS, EU.

(Пример: 23.78 USD.)

Код:

import java.util.regex.*; import java.util.Scanner; public class Main { public static void main(String[] args) { // проверка строки на соответствие шаблону String regexUS = "(\\W|^)(\\d+\\.)(\\w{1,2}\\s)USD(\\W|$)"; String regexRU = "(\\W|^)(\\d+\\.)(\\w{1,2}\\s)RUS(\\W|$)"; String regexEU = "(\\W|^)(\\d+\\.)(\\w{1,2}\\s)EU(\\W|$)"; String s; Scanner g = new Scanner(System.in);// экземпляр класса сканер s = g.nextLine();// считывать до энтера Pattern p1 = Pattern.compile(regexUS);//возвращает Pattern, который соответствует regex Pattern p2 = Pattern.compile(regexRU); Pattern p3 = Pattern.compile(regexEU); Matcher m1 = p1.matcher(s);//Метод matches() проверяет строку на соответствие регулярному выражению Matcher m2 = p2.matcher(s); Matcher m3 = p3.matcher(s); System.out.println("Список цен в долларах: "); while (m1.find()) { System.out.println(m1.group()); } System.out.println("Список цен в рублях: "); while (m2.find()) { System.out.println(m2.group()); } System.out.println("Список цен в евро: "); while (m3.find()) { System.out.println(m3.group()); } } } /* \W Не символ слова \d Цифра от 0 до 9 X+ X один или более раз ^ соответствует началу новой строки. Этот элемент позволяет искать с помощью регулярного выражения фразы, которые находятся в начале строки и перед которыми отсутствуют символы. $ соответствует окончанию строки. Этот элемент позволяет искать с помощью регулярного выражения фразы, которые находятся в конце строки и после которых отсутствуют символы. X{n} X n раз */

Выполнение:

Соседние файлы в предмете Инфокоммуникационные системы и сети