Найти и заменить имена пользователей в списке писем, разделенных специальными символами - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть список писем, которые разделены разными символами, как,;- / и т.д. Цель состоит в том, чтобы заменить только имена пользователей в этих письмах на xxx.

В идеале я должен использовать TSQL, но я могу использовать regex + Java, если SQL не в состоянии это сделать.

Вот пример ввода:

Alex.alex@cigroup.com;vito.maza@agen2.dom,vera@indus.ru;<vera@indus.it>; FRANCIS.TATA@RIZZ.COM-info@attl02.11.COM,mc.rap@wind.com/gorgo.ra13@lib.it;Lor Li Silvest [lor.Li.silvest@hotmail.it]

А вот вывод, который мне нужен:

xxxx.xxxx@cigroup.com;xxxx.xxxx@agen2.dom,xxxx@indus.ru;<xxxx@indus.it>; xxxxxxx.xxxx@RIZZ.COM-xxxx@attl02.11.COM,xx.xxx@wind.com/xxxxx.xxxx@lib.it;xxx xx xxxxxxx [xxx.xx.xxxxxxx@hotmail.it]

Есть ли способы сделать это с помощью SQL-запроса?Если нет, то каково регулярное выражение для выбора всех имен пользователей одновременно?

1 Ответ

1 голос
/ 19 сентября 2019

Это ужасный формат.Если есть шанс изменить вход, это ваше решение.Если вам приходится иметь дело с этим дерьмом (иногда нам нужно брать то, что мы получаем извне), вы можете начать с чего-то такого:

DECLARE @YourString NVARCHAR(MAX)=N'Alex.alex@cigroup.com;vito.maza@agen2.dom,vera@indus.ru;<vera@indus.it>; FRANCIS.TATA@RIZZ.COM-info@attl02.11.COM,mc.rap@wind.com/gorgo.ra13@lib.it;Lor Li Silvest [lor.Li.silvest@hotmail.it]';

- Сочетание строковых операций преобразует вашу строку вXML

SELECT CAST(CONCAT('<mail><fragment>',REPLACE(REPLACE((SELECT REPLACE(REPLACE(@YourString,';','##delimit##'),',','##delimit##') AS [*] FOR XML PATH('')),'@','</fragment><fragment>'),'##delimit##','</fragment></mail><mail><fragment>'),'</fragment></mail>') AS XML)

- это результат

<mail>
  <fragment>Alex.alex</fragment>
  <fragment>cigroup.com</fragment>
</mail>
<mail>
  <fragment>vito.maza</fragment>
  <fragment>agen2.dom</fragment>
</mail>
<mail>
  <fragment>vera</fragment>
  <fragment>indus.ru</fragment>
</mail>
<mail>
  <fragment>&lt;vera</fragment>
  <fragment>indus.it&gt;</fragment>
</mail>
<mail>
  <fragment> FRANCIS.TATA</fragment>
  <fragment>RIZZ.COM-info</fragment>
  <fragment>attl02.11.COM</fragment>
</mail>
<mail>
  <fragment>mc.rap</fragment>
  <fragment>wind.com/gorgo.ra13</fragment>
  <fragment>lib.it</fragment>
</mail>
<mail>
  <fragment>Lor Li Silvest [lor.Li.silvest</fragment>
  <fragment>hotmail.it]</fragment>
</mail>

Вам решать (или некоторым другим мазохистским SO-пользователям :-)) продолжить это.

Удачного кодирования и удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...