0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 27
1

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

16.09.2013, 17:21. Показов 889. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста, нужно на Haskell написать регулярное выражение по поиску строки в массиве. Буду очень благодарен, хаскел совсем не знаю(
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2013, 17:21
Ответы с готовыми решениями:

Регулярное выражение по поиску слов строки выводит пустые результаты
Добрый день! Excel 2010 32bit Написал такой код: Dim RegEx As Object Dim TestStr As String...

Регулярное выражение на четыре строки
Нужно получить из хтмл кода число 1.1750 Не получается записать регулярное выражение состоящие из...

Регулярное выражение из командной строки
Всем привет! Сильно не пинайте, я в perl только начал разбираться, да и в регулярных выражениях...

Регулярное выражение с переносом строки
E-mail: </td> <td> test@mail.ru </td> как мне вытащить такой кусок...

4
Модератор
Эксперт функциональных языков программированияЭксперт Python
30647 / 16874 / 3476
Регистрация: 12.02.2012
Сообщений: 28,284
Записей в блоге: 5
16.09.2013, 18:42 2
Тебе нужно найти и подключить готовую библиотеку или написать свой интерпретатор регулярных выражений на Haskell?

Добавлено через 1 час 14 минут
Давай попробуем соорудить нечто, отдаленно напоминающее regexp "на коленке". Пусть шаблон регулярного выражения содержит два метасимвола: "*" - любая (возможно пустая) последовательность; "?" - один произвольный символ. (Похоже на метасимволы командной строки).

Вот код. Он не вполне корректен, но суть ухвачена:

Haskell
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
-- Отрезать от начала до вхождения заданного символа
 
cutBy :: String -> Char -> String
cutBy [] _ = []
cutBy inis@(s:ss) q | (s == q) = inis
                    | otherwise = cutBy ss q
 
-- Проверить по трафарету
 
stencil :: String -> String -> Bool
stencil [] [] = True
stencil [] _  = False
stencil s []  = False
stencil inis@(s:ss) (p:ps) | (p == '?') = stencil ss ps
                           | (p == '*') = stencil (cutBy inis (head ps)) ps
                           | otherwise = (p == s) && (stencil ss ps)
 
 
Main> stencil "abvbvbvc.exe" "a*.??"
False
Main> stencil "abvbvbvc.exe" "a*.???"
True
Main> stencil "abvbvbvc.exe" "a*.????"
False
Main> stencil "abvbvbvc.exe" "a*.e??"
True
Main> stencil "abvbvbvc.exe" "a*.f??"
False
Main> stencil "a.exe" "a*.f??"
False
Main> stencil "a.exe" "a*.e??"
True
0
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 27
16.09.2013, 20:28  [ТС] 3
Спасибо большое! А можно узнать в чем разница(похожесть) написания будет, если писать это на C/C#?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
30647 / 16874 / 3476
Регистрация: 12.02.2012
Сообщений: 28,284
Записей в блоге: 5
16.09.2013, 20:32 4
Разница в том, что C/C# - императивные языки. Там основой была бы итерация (а не рекурсия, как в Haskell).
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
30647 / 16874 / 3476
Регистрация: 12.02.2012
Сообщений: 28,284
Записей в блоге: 5
18.09.2013, 15:36 5
Несколько улучшенный код:

Haskell
1
2
3
4
5
6
7
stencil :: String -> String -> Bool
stencil [] [] = True
stencil [] _  = False
stencil s []  = False
stencil inis@(s:ss) (p:ps) | (p == '?') = stencil ss ps
                           | (p == '*') = (stencil (cutBy inis (head ps)) ps) || (stencil (cutBy (cutBy inis (head ps)) (head ps)) ps)
                           | otherwise = (p == s) && (stencil ss ps)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2013, 15:36

Регулярное выражение - перевод строки
Читаю файл NB, NM="", NA, NM="", NB, NM="",

Регулярное выражение для строки
Здравствуйте. Есть строка /login?nick=sanych&refer=http://site.com/ и еще одна...

регулярное выражение с переносом строки
Всем привет! Даже не будем влезать в c# а как пример Notepad++ жму поиск по регулярным выражениям и...

Регулярное выражение. Достать значение из строки
Как достать значение из строки Xxxx_sssxxw = qw2iddd; asddd Делал так string str = "Xxxx_sssxxw...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru