Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782

Регулярные выражения

15.01.2010, 20:09. Показов 1611. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я хочу наконец-то изучить регулярные выражения.

Вот пример: дан адрес e-mail и распарсить его, чтобы получить имя, адрес, домен, где зарегестрирован.
Я написал такой код:

C#
1
2
3
4
5
6
7
8
9
10
11
string str = @"   <name> [email]name@gmail.com[/email] ";
string reg = @"\<(?<name>[0-9a-zA-Z_ ]+)\> (?<adress>[0-9a-zA-Z_]+)@(?<domen>[0-9a-zA-Z_]+) ";
 
            Regex regex = new Regex(reg);
            Match match = regex.Match(str);
            if (match.Success)
            {
                Console.WriteLine(match.Groups["name"].Value);
                Console.WriteLine(match.Groups["adress"].Value);
                Console.WriteLine(match.Groups["domen"].Value);
            }
Но соответствий не найдено.
В чём ошибка?

И как можно сделать так, чтобы если адрес был записан не полностью, т.е. просто name@gmail.com выводилось сообщение, что информация не полная и выводился адрес и домен?

Добавлено через 1 минуту
В строке str теги [email] появились автоматически.

Добавлено через 5 часов 29 минут
Немного ошибся в фармате адреса e-mail. Нужно так: "name" <name@gmail.com>.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2010, 20:09
Ответы с готовыми решениями:

Регулярные выражения
Здраствуйте, есть такой код в html&lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;?set=messages&quot;&gt;&lt;/a&gt;&lt;/td&gt; как можно сделать так, чтобы (-это количество...

Регулярные выражения
Здравствуйте, подскажите, как &quot;сказать&quot; регулярному вырожению, что определенный набор символов - это слово: Regex rx = new...

Регулярные выражения
Доброе время суток! Есть входной файл следующего вида: LL(1)= 30, 30, 14, 20, 18, 18, 18, 18, 18, 18, 20, 23, 21, 27, 18, 12,...

7
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
15.01.2010, 20:20
var rx = new Regex(@"^"(?<QuotedName>[^"]+)"\s+<(?<Name>[a-zA-Z0-9_\-\.]+)@(?<Domain>((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3}))>$");
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
15.01.2010, 21:14  [ТС]
Цитата Сообщение от Rififi Посмотреть сообщение
var rx = new Regex(@"^"(?<QuotedName>[^"]+)"\s+<(?<Name>[a-zA-Z0-9_\-\.]+)@(?<Domain>((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3}))>$");
Так не работает, потому что символ " распознаётся как конец строки. Притом, если изменить на \", то ничего не меняется.
Как можно символ " записать в регулярном выражении?



Rififi, на форуме ты как-то советовал книгу O'Reilly - Mastering Regular Expressions. Может быть есть ссылка? Я никак не могу найти в русском издании.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
15.01.2010, 21:23
qwert,

Так не работает, потому что символ " распознаётся как конец строки

Вот ☐☐☐, я про эти кавычки забыл...

тогда так:

new Regex(
"^\"(?<QuotedName>[^\"]+)\"\\s+<(?<Name>[a-zA-Z0-9_\\-\\.]+)@(?<Domain>((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3}))>$"
);

Rififi, на форуме ты как-то советовал книгу O'Reilly - Mastering Regular Expressions. Может быть есть ссылка?

я её не качал - незачем (не в смысле что я крут, хотя... чего уж там скрывать, есть немного ) я просто имею в бумаге. спроси на руборде или нате
1
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
15.01.2010, 21:30
qwert, Из строки требуется удалить текст, заключенный в фигурные скобки
1
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
15.01.2010, 21:45  [ТС]
Цитата Сообщение от Rififi Посмотреть сообщение
new Regex(
"^\"(?<QuotedName>[^\"]+)\"\\s+<(?<Name>[a-zA-Z0-9_\\-\\.]+)@(?<Domain>((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3}))>$"
);
Так работает.
Осталось понять, что к чему)))

Только если e-mail записан не полностью, а только адрес, например name@gmail.com, тогда не находит.
Можно сделать так, чтобы было универсально или нужно писать для этого новое выражение?
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
16.01.2010, 01:07
qwert,

Только если e-mail записан не полностью, а только адрес, например name@gmail.com, тогда не находит.

ну ты же сам написал, в каком формате должна быть строка. вот регэксп под него и сделан.
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
16.01.2010, 18:01  [ТС]
Rififi, я же написал, что так работает. Мне просто для себя интересно, как сделать, чтобы находило по неполным соответсвиям.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2010, 18:01
Помогаю со студенческими работами здесь

Регулярные выражения C#
Здравствуйте, у меня такая проблема. У меня есть ФИО человека, записанное в развернутом виде, мне нужно с помощью регулярных выражений...

Регулярные выражения
string pattern = @&quot;&quot;; Regex regex = new Regex(pattern); if (richTextBox.SelectionStart != 0) { string line = richTextBox.Lines;...

Регулярные выражения
Есть тект в стедующем формате: Вопрос в одну или две строки. Обязательно заканчивается '?'. Ответы с новой строки. Каждый ответ с...

Регулярные выражения
Подскажите как написать выражение что бы это -------- 01/07/11 00:30:00 RECORD RESTART -------- 01/07/11 08:01:03 LINE = 0020 STN...

Регулярные выражения
Всем доброго времени суток! Regex.IsMatch(log, &quot;{1,9}$&quot;); Если log = 123 - то ложь и это правильное поведение. Но если log =...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru