|
Как можно вытащить e-mail из текста? |
☑ |
0
ИС-2
11.12.17
✎
14:26
|
Есть кусок текста в котором содержиться адрес электронной почты. Самый простой способ просто сделать стрнайти(текст,"@"). Но формат может измениться, да и охото попробовать новые способы.
Можно вытащить текст через регулярные выражения?
|
|
1
vicof
11.12.17
✎
14:44
|
Можно. И регулярка будет очень простая.
|
|
2
vde69
модератор
11.12.17
✎
14:47
|
(1) регулярка гуглится за 1 мин
"[+0-9A-z._-]{1;}\@[A-z.]{1;}"
|
|
3
kennetmccormick
11.12.17
✎
14:50
|
заменить пробелы на символыПС. перебирать строки и искать вхождение
|
|
4
Вафель
11.12.17
✎
15:00
|
(2) полноценный регэксп на имэйл выглядит немного не так )))
|
|
5
Cyberhawk
11.12.17
✎
15:03
|
А как регексп в веб-клиенте или под линем сделать чтоб работал в 1С?
|
|
6
Волшебник
модератор
11.12.17
✎
15:06
|
(4) не налегайте на замороченные регулярные выражения.
|
|
7
Вафель
11.12.17
✎
15:23
|
тут на валидация, а поиск - немного другая задача
|
|
8
ИС-2
11.12.17
✎
15:41
|
(1) примеры по проверке есть, а вот мне надо именно извлечь e-mail
|
|
9
Вафель
11.12.17
✎
15:42
|
(8) Есть regexp.test, а есть regexp.match
|
|
10
Timon1405
11.12.17
✎
15:54
|
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Истина; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
RegExp.MultiLine = Ложь; //Многострочный режим
RegExp.Pattern = "([+0-9A-z._-]+)@([A-z.]+)";
СтрВход = "123@mail.ru";
Массив =RegExp.Execute(СтрВход);
Если Массив.Count() Тогда
МассивТогоЧтоВСкобках=Массив.Item(0).SubMatches;
ДоСобаки =МассивТогоЧтоВСкобках.Item(0);
ПослеСобаки=МассивТогоЧтоВСкобках.Item(1);
КонецЕсли
|
|
11
Сияющий в темноте
11.12.17
✎
16:35
|
Зачем регэкспы ?
Найти в тексте, где живут @ (конечно, их могут заменить на %40, но это маловероятно). Далее, отступить назад до первого пробела (если встретятся кавычки, то экранировать пробелы - по желанию) и найти первый символ, не являющийся почтовым адресом после @.
Вперёд тоже нужно отступать до первого недопустимого символа.
Например, vasya@mail.com,petya@mail.com,senya@mail.com - три адреса.
|
|
12
ИС-2
03.01.18
✎
22:45
|
в продолжении темы.
Надо в огромном модуле (>10000 строк) произвести замену
конструкций типа
Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("168")
т.е может быть название абсолютно любого справочника, на вызов функции повторного использования
_ПовтИсп.ПолучитьЭлементПоКоду("КлассификаторЕдиницИзмерения","168")
т.е мне надо найти все строки, где есть текст Справочники и НайтиПоКоду
с помощью какого механизма можно это сделать ?
|
|
13
Скиурус
04.01.18
✎
08:36
|
(11) а vasya\@mail.com\,petya\@mail.com\,senya@mail.com - всего один валидный адрес :)
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший