Выпарсить слова из списка с известными согласными

Nikol

Client
Регистрация
28.04.2013
Сообщения
184
Благодарностей
11
Баллы
18
Дан список слов:

аймак
амок
имаго
маг
мойка
мука
черта
чёрта с два
чертёж
чертёжик
чертёжник
чертёжница
чертёжно-графический
чертёжно-конструкторский
чертёжно-копировальный
чертёжный
чертёнок
чёрт знает что (кто, какой, где, куда и т. п.)
чёртик
чертилка
чертить
чертиться

Необходимо выпарсить слова, в которых первая согласная м или х, а вторая к или г.
Гласные могут быть любые. Параметры слова: слово одно, без дефисов и доп слов.
Создаю регулярное выражение:
^[аеийоуъыьэюя]*(м|х)[аеийоуъыьэюя]*(г|к)[аеийоуъыьэюя]*$
1. В notepad++ работает, а в zenno - нет.
2. Берется текст из файла в неправильной кодировке.
Файлы: http://dropmefiles.com/7IcH7
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
1) А вы в список положили? Если нет - то у вас в переменной с текстом фаила одна длиннющая строка.
2) Может, у вас фаил в неправильной кодировке? Зенка работает с UTF-8
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
(?<=(^|\r|\n))[мх][кг][а-яА-ЯёЁ]+(?=(\r|\n|$))

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

Nikol

Client
Регистрация
28.04.2013
Сообщения
184
Благодарностей
11
Баллы
18
В файле, как вы могли видеть, слова идут списком.
В переменной, файл текста идет списком.
Кодировка текста действительно была не в UTF-8. Перекодировал и появились слова.
Регулярное выражение (?<=(^|\r|\n))[мх][кг][а-яА-ЯёЁ]+(?=(\r|\n|$)) не работает ни в конструкторе регулярных выражений, ни в проекте.
Файлы с исправленной кодировкой:
http://dropmefiles.com/bYG4O
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
(?<=(^|\r|\n))[аеийоуъыьэюя]*[мх][аеийоуъыьэюя]*[кг][а-яА-ЯёЁ]+(?=(\r|\n|$))

в моём первом выражении согласные шли по-порядку. Я думал именно на эти 2 буквы должно начинаться слово.
 
  • Спасибо
Реакции: Nikol

Nikol

Client
Регистрация
28.04.2013
Сообщения
184
Благодарностей
11
Баллы
18
Да действительно в моем случае подошло вот это регулярное выражение
(?<=(^|\r|\n))[аеийоуъыьэюя]*[мх][аеийоуъыьэюя]*[кг][аеийоуъыьэюя]*(?=(\r|\n|$))
Спасибо daniilneet
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)