|
получить адрес эл. почты из строки JohnGilbert, timurhv, Aleks73, Fish, integer, nick86, maxar, KJlag, RVN, Prog_man, Chameleon1980, Garykom, ДенисСмирнов, San787, kupec, MWWRuza, alexela, Хряк, Timon1405, calmius, Шаграм, qwerty, Oldman06, 1cVandal, probably, Доминошник, Tatitutu, МимохожийОднако, kir-g, obs191, Мультук, oleg_km, АгентБезопаснойНацио, Гипервизор, d4rkmesa, rozer76, phabeZ, ads55, Builder, Tarlich, Daniilvb, renegade, paramedic, Джордж1, crotnn, shuhard, Crusher, Lama12, Hawk_1c, ndrv, craxx, Homer, Vstur, zenik, p-soft, who respawn, chelentano, Hmster, Волшебник, _Batoo
| ☑ | ||
|---|---|---|---|---|
|
0
Prog_man
гуру
10.03.26
✎
15:58
|
Добрый день,
подскажите как эл.почту получить из строки? сейчас код такой: ПодробностиФункция мПолучитьЭлПочтуОтправителя(Строка) Шаблон = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"; RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.Global = Истина; RegExp.Pattern = Шаблон; Результат = Новый Массив; Matches = RegExp.Execute(Строка); Для Каждого Match Из Matches Цикл Результат.Добавить(Match.Value); КонецЦикла; Возврат Результат; КонецФункции возвращает пустой массив платформа 1С:Предприятие 8.5 (8.5.1.1150) |
|||
|
1
Мультук
гуру
10.03.26
✎
15:22
|
(0)
А как быть с адресами а-ля мультук@миста.рф ? [хе-хе] |
|||
|
2
Prog_man
гуру
10.03.26
✎
15:27
|
(1) с регулярками ранее не работал, может шаблон не верный (то что нагуглил), почта типа мультук@миста.рф, в 1с может и не грузиться
|
|||
|
3
ads55
10.03.26
✎
15:30
|
(2) а почему не ищешь разницу между первый пробел до "@" и первый пробел после "@"?
Так же проще, чем регулярки? |
|||
|
4
Chameleon1980
10.03.26
✎
15:40
|
(3) наверное, "мы не ищем легких путей" :)
|
|||
|
5
Prog_man
гуру
10.03.26
✎
15:44
|
(3) хотел регулярки по юзать )) по сабжу то есть варианты, почему пустой массив?
|
|||
|
6
ads55
10.03.26
✎
15:49
|
(5) "по сабжу то есть варианты" - нет. Больше не мешаю.
"[a-zA-Z0-9.-]+\" - вот это - 9."-"]+"\" - кавычками лишнее выделил. |
|||
|
7
JohnGilbert
10.03.26
✎
15:50
|
https://stepik.org/course/107335/syllabus
Бесплатная часть по синтаксису регулярок проходится за 4-5 часов. Вопросы отпадут быстро. |
|||
|
8
JohnGilbert
10.03.26
✎
15:51
|
А на кой ляд VBScript.RegExp, если есть СтрНайтиПоРегулярномуВыражению?
|
|||
|
9
rozer76
10.03.26
✎
15:55
|
(0) Шаблон = "^[a-zA-Zа-яА-Я0-9._%+-]+@[a-zA-Zа-яА-Я0-9.-]+\.[a-zA-Zа-яА-Я]{2,}$";
|
|||
|
10
rozer76
10.03.26
✎
15:56
|
+ (9) случай в (1) обработает
|
|||
|
11
rozer76
10.03.26
✎
15:57
|
(8) платформа старая
|
|||
|
12
Prog_man
гуру
10.03.26
✎
15:57
|
(8) тестил, тоже не работало, видимо в шаблоне дело
|
|||
|
13
Prog_man
гуру
10.03.26
✎
15:58
|
(11) 1С:Предприятие 8.5 (8.5.1.1150)
|
|||
|
14
Timon1405
10.03.26
✎
15:58
|
(0) у Вас в выражении ^ и $ лишние: это якоря начала и конца строки, то есть подходят только строки которые являются емэйлом, но не содержат где-то емэйл
|
|||
|
15
JohnGilbert
10.03.26
✎
16:01
|
[\w\d.-]+@[\w]+.[\w]+
А дальше уже думать, что у тебя в начале и в конце (^&) или (\b) |
|||
|
16
JohnGilbert
10.03.26
✎
16:03
|
(13) Значит используй СтрНайтиПоРегулярномуВыражению
|
|||
|
17
Prog_man
гуру
10.03.26
✎
16:04
|
(16) видимо так и сделаю, сейчас проверю шаблон
|
|||
|
18
JohnGilbert
10.03.26
✎
16:05
|
(17) https://regex101.com/ здесь можно регулярки отлаживать, помогает. А так респект за неиспользование способа из (3).
|
|||
|
19
Timon1405
10.03.26
✎
16:11
|
(17) RegExp.Ignorecace = истина надо ставить, у вас буквы только большие в шаблоне. в СтрНайтиПоРегулярномуВыражению оно 3м параметром идет, тоже важно истину писать
|
|||
|
20
Prog_man
гуру
10.03.26
✎
16:13
|
благодарю, получилось
|
|||
|
21
JohnGilbert
10.03.26
✎
16:14
|
(19) Очень спорный совет
|
|||
|
22
Prog_man
гуру
10.03.26
✎
16:15
|
(19) ок, вроде и так работает
|
|||
|
23
JohnGilbert
10.03.26
✎
16:16
|
(22) Не надо. \w - уже буквы в верхней и нижней раскладке.
|
|||
|
24
Prog_man
гуру
10.03.26
✎
16:21
|
(23) 👍
|
|||
|
25
probably
10.03.26
✎
16:37
|
{2,} - это означает 2 символа? то есть адреса типа .com не не рассматриваются?
а так же, правильно ли я понимаю, что не рассматриваются адреса формата jet.msk.su? |
|||
|
26
Мимохожий Однако
10.03.26
✎
16:39
|
БСП 3.2.1 Результат = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(СписокАдресов)
|
|||
|
27
Timon1405
10.03.26
✎
16:40
|
(25) это 2+ символа, то есть .ru .com .other подойдет, а .z не подойдет
|
|||
|
28
Fish
гуру
10.03.26
✎
16:40
|
(26) Ну вот. Сразу с козырей зашел.
|
|||
|
29
JohnGilbert
10.03.26
✎
16:43
|
(15) Точки экранировать забыл.
(25) [\w\d\.-]+@[\w]+\.[\w\.]+ так найдет адреса с любым количеством точек |
|||
|
30
JohnGilbert
10.03.26
✎
16:46
|
(29) [\w\d\.-]+@[\w\.]+
упрощается до такой формы. \w не содержит пробел. |
|||
|
31
Fish
гуру
10.03.26
✎
16:53
|
(30) Неправильно. кривой адрес типа fgdfg@ya..ya__ находит
|
|||
|
32
JohnGilbert
10.03.26
✎
16:56
|
(31) Согласен) Но, если речь про реальные адреса почты, мы такой не встретим, т.к. там ограничения почтовых сервисов на нейминг. Если искать в сыром тексте адреса имейлов, то будет куча корнер кейсов, которые надо обыгрывать, как ваш.
|
|||
|
33
Fish
гуру
10.03.26
✎
16:59
|
(32) На самом деле вариант (26) решает задачу. В т.ч. и проводит проверку корректности адреса. Зачем, как Гений, изобретать велосипеды?
|
|||
|
34
JohnGilbert
10.03.26
✎
17:00
|
(33) Спорить не буду вовсе. Регулярки - чисто академический интерес. Пару раз меня выручили, там где типовых методов нет.
В ситуации ТС использовать метод из (26) лучший вариант. |
|||
|
35
Fish
гуру
10.03.26
✎
17:01
|
(32) "если речь про реальные адреса почты, мы такой не встретим" - Речь в (0) про получение адреса из строки. Откуда взята эта строка - неизвестно, и реальные там адреса или баба Маня руками с бумажки вбивает, неизвестно.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |